黑马程序员技术交流社区
标题:
黑马程序员_继承体系和接口体系
[打印本页]
作者:
b277967086
时间:
2015-4-18 22:57
标题:
黑马程序员_继承体系和接口体系
继承
@就是把多个类中的共性给提取出来定义到一个独立的类中。然后让这多个类和该独立的类产生一个关系,
这多个类就具备了这些内容。这个关系叫继承。
(2)Java中如何表示继承呢?格式是什么呢?
A:用关键字extends表示
B:格式:
class 子类名 extends 父类名 {}
@例如:class Student extends Person{}
class Teacher extends Person{}
Person类中有Student类和Teacher类所共有的东西
(3)继承的好处:
A:提高了代码的复用性
@我定义一个父类,只要以后有用到父类的东西,直接继承父类就好了
B:提高了代码的维护性
@修改父类的某个属性,子类就会一起更改
C:让类与类产生了一个关系,是多态的前提
(4)继承的弊端:
原则:低耦合,高内聚。
耦合:类与类的关系
内聚:自己完成某件事情的能力
B:打破了封装性
(5)Java中继承的特点
A:Java中类只支持单继承
B:Java中可以多层(重)继承(继承体系)
@例如:Son extends Father{}
Father extends Person{}
(6)继承的注意事项:
A:子类不能继承父类的私有成员
B:子类不能继承父类的构造方法,但是可以通过super去访问
C:不要为了部分功能而去继承
B:构造方法
a:子类的构造方法默认会去访问父类的无参构造方法
是为了子类访问父类数据的初始化
b:父类中如果没有无参构造方法
1.子类通过super去明确调用带参构造
2.子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造
3.让父类提供无参构造
@override就是在继承父类的时候,把从父类那里继承来的成员方法重写,具体表现就是成员方法内的方法体不同了
例如:class Father{
public static void main(String[] args){
System.out.println("我是父亲");
}
}
class Son extends Father{
public static void main(String[] args){
System.out.println("我是儿子");
}
}
}
1:final关键字
(1)是最终的意思,可以修饰类,方法,变量。
(2)特点:
A:它修饰的类,不能被继承。
B:它修饰的方法,不能被重写。
C:它修饰的变量,是一个常量。
@特别注意:修饰引用类型 时,地址值不能发生改变,但是对象的内容是可以改变的
2:多态
(1)同一个对象在不同时刻体现出来的不同状态。
@例如:Person pe=new Student();
Person pe2=new Teacher();
(2)多态的前提:
A:有继承或者实现关系。
B:有方法重写,没有就没意义了。
C:有父类或者父接口引用指向子类对象person s=new student();。
(3)多态中的成员访问特点
@ 因为只有成员方法有重写,所以只有成员方法运行的时候看new的对象(右边)
(4)多态的好处:
A:提高代码的维护性(继承体现)
B:提高代码的扩展性(多态体现)
现象:
子可以当作父使用,父不能当作子使用。
3:抽象类(abstract)
没有具体的方法体的方法是抽象的方法,定义的抽象方法就是给它的子类去重写的。
在一个类中如果有抽象方法,该类必须定义为抽象类。
(1)抽象类的特点
A:抽象类和抽象方法必须用关键字abstract修饰
B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
C:抽象类不能实例化
D:抽象类的子类
a:是一个抽象类。
b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。
(2)抽象类的几个小问题
A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
用于子类访问父类数据的初始化
B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
为了不让创建对象
C:abstract不能和哪些关键字共存
a:final 冲突
b:private 冲突
c:static 无意义
4:接口
(1)接口的特点:
A:接口用关键字interface修饰
interface 接口名 {}
B:类实现接口用implements修饰
class 类名 implements 接口名 {}
C:接口不能实例化
D:接口的实现类
a:是一个抽象类。
b:是一个具体类,这个类必须重写接口中的所有抽象方法。
(2)接口的成员特点:
A:成员变量
只能是常量
默认修饰符:public static final
没有构造方法,成员方法 只能是抽象的
默认修饰符:public abstract
@ 类与接口的 实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时,实现多个接口
@ 接口与接口的 继承关系,可以单继承,也可以多继承
@接口实现相对于继承来说的区别就在于,实现接口相当于获得额外的功能,而继承就相当于获得本该有的功能
作者:
b277967086
时间:
2015-4-18 22:59
请多多指教
作者:
不存在的奇迹
时间:
2015-4-18 23:02
支持一下
作者:
刚起步的小马驹
时间:
2015-4-18 23:34
继承和接口我快被弄晕了悲剧
作者:
海带
时间:
2015-4-19 09:35
这句话有点不仔细吧——子类不能继承父类的私有成员
我认为这样的:子类不能继承父类的不可访问的成员,如果成员变量是私有的但可以访问是可以继承的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2