Day10
抽象
- 抽象类
- 用abstract修饰,不能被实例化
- 抽象方法:没有方法体,,抽象方法都必须在抽象类里
- 抽象类:一般是父类
多态
- 一种事物的多种形态,一般指的是对象
- 必须在即成里
- 必须有重写
- 多态中访问变量的规则:编译看左边,运行看右边
- 向上转型:父类名称 对象名= new 子类名称
- 父类的引用执行子类的具体对象,弊端:不能访问到子类独有的方法
- 向下转型:instanceof 判断; 子类名称 子类对象=(子类名称)对象转型的对象名
- 多态的两种体现方式:
- 以父类作为参数
- 以父类作为返回值
接口
- 解决java里的单继承问题 关键字interface
- 语法:访问修饰符 interface 接口名称{ }
- 接口里都是抽象方法,不能有普通方法。
- 接口实现的语法:implements Pager,Link(implements接口1,接口2)
- 接口里没有变量,都是常量public static final String MAX=“4”
- 接口里的方法都是抽象方法
- 接口里没有构造方法
=====================================================
类与类之间的关系:可以单继承,不可以多继承
类与接口的关系:可以实现多个接口
接口与接口的关系:可以单继承,不可多继承
抽象类与接口的关系:抽象类是原始的状态;接口就是定义了一些约束
接口与继承可以混合使用
内部类
成员内部类
public class 外部类名{
public class 内部类名{
}
}
- 特点:
- 内部类可以获取外部类的属性与方法(包括私有的)
- 外部类获取不到内部类的属性与方法
- 公有的内部类:获取内部类的语法是:外部类名.内部类 对象的名称= new 外部类().new内部类
- 私有的内部类:只能够奔雷访问
- 注意:变量重名:如果外部类的变量与内部类的变量重名;访问外部变量的语法是:类名this.变量
- 静态内部类:加static一般会去掉修饰符
- 语法:Body.Heart h= new Body.Heart();外部类.内部类 对象的名称 = new 外部类.内部类()。
方法内部类
- 语法:访问修饰符 返回值 方法名称(参数列表){
class 类名{
方法体
}
} - 注意点:
- 不能有访问修饰符
- 生命周期随着方法的开始而开始,结束而结束
- 不能够直接调用,但是可以间接调用,在外部类的方法里实例化这个对象,然后调用其方法。
匿名内部类
- 一般实在继承或者实现的基础上
- 语法:new 抽象类或者接口{
//必须实现的方法
}