*继承中子父类中构造函数的特点
super和this用法相似。this是用作访问本类中,空参的构造函数。
构造函数不能覆盖。
小结:
*子类实例化过程细节
为什么子类构造函数中会有默认的super();?
*子类实例化过程图解
package extend;
class Fu {
Fu() {
super();
show();
return;
}
void show() {
System.out.println("fu...show");
}
}
class Zi extends Fu {
int num = 8;
Zi() {
super();
return;
}
void show() {
System.out.println("zi...show:" + num);
}
}
public class TestExtends {
public static void main(String[] args) {
Zi z = new Zi();
}
}
显示结果:zi...show:0
main函数改为:
public class TestExtends {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
显示结果:
zi...show:0
zi...show:8
图解:
之前讲的是:先默认初始化,再显示初始化,最后再构造函数初始化。那是因为没父类。
存在父类的情况下,是先初始父类变量,在执行子类变量。
*final关键字
回顾继承的好处:1. 提高代码复用性,为多态提供可能
不好之处:有可能会覆盖父类的调用底层的方法!打破了封装性。
如何呢?加final关键词修饰父类就OK了
这是修饰类的情况。
如果类中有的方法是需要被继承的,那怎么办呢?
final修饰方法!
final修饰的变量是常量只能被赋值一次。所有字母大写,如果有多个单词,单词间用下划线隔开。
且被fina修饰的关键词必须初始化。这个时候可以加上static。
小结:
*抽象类
当一个类没有足够信息描述功能时,就可以定义为抽象的。
抽象方法所属的类也是抽象类。
抽象类中可以存在不是抽象方法。
在子类中都会重新定义方法,那为什么要抽象出来方法呢?——用起来很方便。
因为java会把这些汉字当做Unicode码
*抽象类的特点
抽象类的特点:
*抽象类——练习
abstract class Person {
String name;
String num;
double money;
Person(String name, String num, double money) {
this.name = name;
this.num = num;
this.money = money;
}
abstract void work();
}
class Stuff extends Person {
Stuff(String name, String num, double money) {
super(name, num, money);
}
void work() {
System.out.println("name:" + name + " num:" + num + "money: " + money);
System.out.println("Stuff work...");
}
}
class Manager extends Person {
double bonus;
Manager(String name, String num, double money, double bonus) {
super(name, num, money);
this.bonus = bonus;
}
void work() {
System.out.println("name:" + name + " num:" + num + "money: " + money
+ " bonus:" + bonus);
System.out.println("Manager work...");
}
}
public class TestAbstract {
public static void main(String[] args) {
Stuff s1 = new Stuff("Jack","10123",1200);
s1.work();
Manager m1 = new Manager("Lisa","20123",2000,3000);
m1.work();
}
}
结果:
name:Jack num:10123money: 1200.0
Stuff work...
name:Lisa num:20123money: 2000.0 bonus:3000.0
Manager work...
*接口
定义接口使用的关键字不是class而是interface。
接口当中除了定义抽象方法之外,还可以定义全局常量!
而且这些成员都有固定的修饰方法!
由此,得出接口中的成员都是公共的权限。
不写的话,会自动加上。
*接口的实现
*接口的多实现,
接口的好处
*接口的一些细节
一个类可以在继承一个类的时候,还可以实现多个接口
接口的出现避免了单继承的局限性。
类与类之间可以继承关系
类与接口是实现关系
接口与接口之间是继承关系,而且接口可以多继承。【关键点:方法体】
*接口的特点
*接口和抽象类的区别
*接口的应用
interface:规则