java系列-面向对象设计-创新互联

面向对象设计

面向对象的设计思想是当今软件设计领域应用最为广泛的设计思想,它解决了面向过程的设计无法适应大规模软件开发的问题,可以有效的将问题进行划分和隔离。

成都创新互联公司成都网站建设按需规划网站,是成都网站建设公司,为成都PVC花箱提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站设计热线:18982081108基本特点
  • 封装;
  • 继承;
  • 多态;
设计原则
  • 开闭原则:对扩展开发,对修改关闭;
  • 里式替换原则:父类出现的地方,可以直接用子类替换;
  • 依赖倒置原则:面向接口、面向父类编程;
  • 单一职责原则;
  • 接口隔离原则;
  • 最少知道原则;
  • 合成复用原则:多用组合、聚合,少用继承;
类定义

//declear package
package com.test;
public class Employee {
    //declear field
    private String name;
    private int age;

    //constructor
    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //method 
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

包是java中的一种低级封装模式,通过包声明就可以把一个类放在某个包下,从而实现类的第一层隔离。在声明类的时候叶可以不指定包声明,但通常不推荐这么做。

在java中使用包的场景有两个,一个是将当前类声明到某一个包下,另外就是导入其他包中的类,而在导入类时又分为类导入和静态导入。

//在头部导入
import java.utils.Date;
//在使用时导入
java.utils.Date date = new java.utils.Date();

//静态导入,可以导入类中的静态方法,使用更方便
import static java.lang.System.*;

类用class关键字来声明,一个类的名称可以和所在文件名称不同,但一般不会这么做,类名由字母、数字、下划线、$组成,但不能以数字开头。

成员变量是类对数据的封装,方法是类对外提供的行为或能力,即一个功能点,在方法中往往包含了对数据的数据过程,类不应该直接将内部数据和数据处理过程暴露给使用者。

类中如果定义了多个构造函数,可以通过this关键字进行互相调用。成员方法也可以通过重载的方式来实现扩展,所谓重载就是方法名称相同,但方法参数列表不同的方法(参数类型、个数、顺序不同)。

变量和方法还可以通过static声明为静态的,静态变量一般会作为常量存在,例如:

public static final int MAX_VAL = 1000;

而静态方法一般用来声明工具方法,例如Collections和Arrays中提供的工具方法都是静态方法。

继承

public class Person {
    protected String name;
    protected int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void sayHello() {
        System.out.println("hello," + name);
    }
}

//declear subclass
public class Employee extends Person {
    private String no;
    public Employee(String name, int age, String no) {
        //invoke super class constructor
        super(name, age);
        this.no = no;
    }
    
    //override super class method
    public void sayHello() {
        System.out.println(no + ", hello, " + name);
    }
}

public class Main {
    public static void main(String[] args) {
        //
        Person person = new Employee();
    }
}

如果希望类不会被继承或方法不会被重写,可以将类或方法声明为final的,java类库中的一些核心类为了保证代码的安全性,都被声明为了final,比如String。

继承是实现多态的基础之一,在使用多态时就会涉及到强制类型转换,这种转换即可以向下转也可以向上转。

Person person = new Employee();
Employee emp1 = (Employee)person;
Person person2 = (Person)emp1;

在使用继承的模式构建软件系统时,抽象类是最常用的模式,抽象类就是具有抽象方法的类,一般用抽象类类定义程序的骨架,然后用子类加多态的方式来动态的扩展软件系统,比如常用的Spring开发框架中就使用的大量的抽象类来保证软件的可扩展性。

在java中,Object是所有类的默认父类

在Object中提供了与等待/通知、对象析构、克隆、等值判断、打印等方法,其中equals/hashCode和toString是在日常开发中会经常涉及的三个方法。

  • equals:比较两个对象是否相等,默认比较对象的内存地址;
  • hashCode:返回对象的哈希值,默认调用native方法;
  • toString:返回对象的字符串打印值,默认打印对象地址; 
接口

接口在java中一般用来定义行为,如果某个对象想要具有某个接口的行为,就直接实现这个接口。接口中的方法是public abstract的,成员变量是public static final 的,在使用时要注意。

另外在java8中引入了接口方法的默认实现,即可以为接口方法提供默认的实现逻辑。

public interface Walk {
    default void walk() {
        System.out.println("walk");
    }
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:java系列-面向对象设计-创新互联
当前地址:http://myzitong.com/article/dgihss.html