Day12-6.15-6.16
继承
-
本质是对某一批类的抽象,从而实现对现实世界更好的建模。
-
extends的意思是“扩展” 子类是父类的扩展。
-
java中类只有单继承,没有多继承。
package Oop.Constructor;
//继承 父类
public class OopDame02 {
}
继承
package Oop.Constructor;
//子类 派生类
public class OopDame03 extends OopDame02{
}
多态也要球继承的前提。
java其他的关系;组合
package Oop.Constructor;
public class OopDame03 extends OopDame02{
}
继承概念解析
- 继承是类和类之间的一种关系,除此之外类与类之间还有的关系;依赖、组合、聚合等 。
- 继承关系的两个类,一个为子类(派生类)一个父类(基类)子类继承父类。使用关键字extends来表示。
- 子类和父类之间从意义上讲应该具有“is a”的关系 。
eg;
package Oop.Constructor;
//继承 夫类
public class OopDame02 {
public void say(){
System.out.println("说了一句屁话");
}
}
子类继承
package Oop.Constructor;
//子类
public class OopDame03 extends OopDame02{
public static void main(String[] args) {
OopDame03 tay = new OopDame03();
tay.say();
}
}
输出;说了一句屁话
四个修饰符;
public:公共的(优先级最高)
privant;私有的
default;默认的
protected ;受保护的;
ctrl+H 捷键显示子类和父类的关系;继承树。
java中所有的类都默认直接或者间接继承object类
super和this
父类
package Oop.Constructor;
public class Father {
protected String name ="王八蛋1";
}
子类
package Oop.Constructor;
public class Son extends Father{
private String name="王八蛋";//
public void test(String name){//形式参数的name传递给它的;
System.out.println(name);//当前string name
System.out.println(this.name);//子类中的name
System.out.println(super.name);//访问父类的属性;
}
}
调用
package Oop.Constructor;
//Application应用 规范一个项目只存在一个main方法
public class Application {
public static void main(String[] args) {
Son son = new Son();
son.test("wangbadan");//调用方法
}
}
输出:wangbadan;王八蛋;王八蛋1
结论
super关键字输出父类中的方法;私有的关键字private 不能被继承
this关键字输出当前类
父类
package Oop.Super;
public class Person {
public Person() {
System.out.println("父类执行了");
}
}
子类
package Oop.Super;
public class Studer extends Person{
public Studer() {
super();
System.out.println("子类执行了");
}
}
运行
package Oop.Super;
public class Application {
public static void main(String[]args){
Studer studer = new Studer();
/*studer.test("名字3");
studer.test1();*/
}
}
输出:父类执行了
子类执行了
结论;说明有一句隐藏代码;默认调用了父类的无参构造;
super();调用父类的构造器必须在子类构造器的第一行;
总结
super注意点
- super调用父类的构造方法 ,必须在构造方法的第一行
- super必须只能出现在子类的方法或者构造器中
- super this不能同时调用构造方法
this注意点
-
代表对象不同;
this;本身的调用者这个对象
super;代表父类对象的应用
-
前提
this;没有继承也能用
super;只能在继承条件下可使用
-
构造方法
this();本类的构造
super();父类的构造