1.final的用法:
(1)修饰类,该类不能被继承
final修饰成员变量/成员方法
(2)final修饰基本数据类型,那么该类不能改变.
final修饰引用类型时,引用类型的地址值不能更改,但值可以改
(3)final修饰初始化:被final修饰的成员变量只能被赋值一次,可以先定义,在方法构造完成之前赋值
2.多态:指一个事物在不同时刻的体现显示的一种状态
(1)前提条件:必须有继承关系
有方法重写,没有也没关系,但是没有意义
父类的引用类型指向子类:Fu f=new Zi();
(2)成员访问特点:
成员变量:编译看左,运行看左:(父类有这个变量,不会报错,编译可以通过,输出父类成员变量的值)
成员方法:非静态:编译看左,运行看右;
静态:编译看左,运行看左
(3)好处:提高代码的复用性(继承)
提高了代码的扩展性,父类引用指向子类对象
(4)弊端:不能访问子类特定功能
解决方法:
1)使用子类的特有功能,创建子类对象,调用子类对象的功能
2)向上转型:父类引用指向子类对象------->向下转型:将父类的引用强制转换成子类的对象
Fu f=new Zi();
Zi z=(Zi) f;
注意:向下转型使用不当会出现运行时异常:java.lang.classException;
3.抽象
(1)抽象类格式:例如:abstract class Animal {}
抽象方法格式:例如:public abstract void show :没有方法体
(2)抽象类成员特点:
成员变量:可以出现变量,也可以自定义常量
成员方法:可以是抽象的,也可以是非抽象的
抽象类的特性:强制要求子类重写抽象类的抽象方法;提高代码的复用性(继承)
(3)abstract不能和哪些关键字在一起使用?
private:冲突
final:冲突
static:冲突,静态的抽象方法没有意义
4.接口:体现的是该事物的一种扩展的功能:比如猫跳高,狗计算等
(1)格式:interface+接口名称(与类一致)
(2)特点:接口中的方法只能是抽象方法:void jump():省略了public abstract:默认修饰符
不能直接实例化:不能创建对象
(3)接口中的成员特点:
成员变量:默认修饰符:比如:public final static int n=10;
成员方法:只能是抽象方法:默认修饰符:public abstract
构造方法:接口中无构造方法
5.类与类,类与接口,接口与接口的关系?
类与类:继承:单继承/多层继承
接口与接口:继承:单继承/多继承
类与接口:实现关系:implement:单实现/多实现,还可以在继承一个类的同时实现多个接口
6.接口与抽象类的区别?
A:成员变量:抽象类:可以常量,也可以变量
接口:只能常量
成员方法:抽象类:可以抽象方法.也可以非抽象方法
接口:只能抽象方法
构造方法:抽象类:可以有参构造,也可以无参构造
接口:无构造方法
B:设计原则的区别:
抽象类:需要实例化,需要抽象多态进行,体现的是一种"is a"的关系,由继承保证
接口:是事物一种扩展功能,只需子实现类进行实现即可