java中的三(四)大特性 :继承 、 封装 、多态、(抽象)
类与类之间的关系:
is-a 继承 、实现
继承的表现:使用extends继承父类
实现的表现:使用importance实现接口
has-a 组合 、聚合、关联
关联的表现:关联关系一般使用成员变量来实现。
use-a (need-a) 依赖
依赖的表现,一个类的方法操作另一个类的对象
例如:人(Person) 开 车(Car)
继承
使用extends关键词 子类继承父类,子类拥有父类所有的方法与属性(注:除了private修饰的方法以及属性)
在JAVA中只能单继承,所有的类没有显性的继承父类系统默认隐性继承Object类,Object类是所有的父类
继承的好处:子类可以重写父类方法(实现运行时多态性),提高代码可复用性
示例:
//Son是子类 ,Father是父类 所以就是子类继承
public class Son extends Father{
//方法......
}
super关键词:若子类重写父类方法,可使用super调用父类中的方法及属性,以及构造方法,调用构造方法时super关键词只能出现在第一行代码
多态
实现多态的前提是:继承关系 ,父类作为引用地址指向子类地址
语法:
public class Animal{}
public class Person extends Animal{}
public class Test{
public statci void main(String[] args){
Animal animal=new Person(); //向上转型
}
}
抽象
abstract修饰的类成为抽象类
语法:public abstract class Animal{
public Animal(){
//Animal的构造方法
}
//抽象方法中不能包含方法体
pulic abstract void show();
}
类的权限修饰符为:protected、public 、默认不写
定义了一个抽象方法则该类必须定义为抽象类
抽象类中可以定义具体方法,构造方法,代码块
抽象类不可以被实例化,需要通过子类继承(继承抽象类必须实现抽象类中所有的抽象方法,否则继承的子类也应该为抽象类),再将子类实例化
注:定义了抽象类和抽象方法不能使用final修饰,使用final里修饰的为:最终类(方法),不能被继承、重写
接口
interface 修饰的类称为接口
权限修饰符为public及以上
语法:public interface Animal{
//静态常量 public static final String name="啊榕"; //常量必须赋初始值,否则编译报错
//抽象方法 //不能包含方法体
注:在jdk1.8之后可以含有一个static具体方法,以及多个default修饰的具体方法
}
接口为更抽象的一种类型、不能包含具体实现的方法,如:构造方法、代码块、具体方法
接口中只能包含静态常量、抽象方法
实现接口使用implement关键词实现接口可以多实现,使用,分隔 例:public class a implement b,c
接口直接可以实现多继承!一个接口可以继承多个接口 例如:public interface a extends b,c
实现接口必须重写方法中的所有方法,否则该类也应该为抽象类
原文地址:https://www.cnblogs.com/StuAr/p/a3ce24f9f11ac9c1ed5943fa804d0bc3.html