package Homework343;
import javax.print.DocFlavor;
public class homework348 {
public static void main(String[] args) {
new Demo().test();
new Demo("Join").test();
}
class Test{
String name="Rose";
Test(){
System.out.println("Test");
}
Test(String name){
this.name=name;
}
}
class Demo extends Test{
String name="jack";
Demo(){
super();
System.out.println("Demo");
}
Demo(String s){
super(s);
}
public void test(){
System.out.println(super.name);
System.out.println(this.name);
}
}
}
new Demo().test()没有指向对象,所以为一个匿名对象,new Demo("Join").test()也为一个匿名对象。Demo的无参构造,Demo(){
super();
System.out.println(“Demo”);
}
"Test";"Demo";Rose;this.name是本类的name,即输出jack.new Demo(“Join”).test();
Test(String name){//是传进来的Join
this.name=name;//将Join赋给this.name,将父类的name改为Join
}
属性没有动态绑定机制,哪里声明就在哪里使用
Join;jack;1. 继承的特点(1)子类只能继承一个父类(单继承),可以多层继承,例如C继承自B,B继承自A,那么C同样可以调用A类的属性或者方法;
(2)子类继承父类的普通属性和方法
(3)子类不能继承父类的构造方法,但是在子类的构造方法第一行隐 式的存在一个super(),用来调用父类的构造方法;
(4)子类无法继承父类中被private修饰的属性或者方法;
(5)子类可以继承父类中的静态方法和静态属性;
(6)父类中必须有无参构造方法,才能被继承,只有有参构造方法无法被继承。
2. super关键字(1) super.属性——调用父类的属性
(2) super.方法——调用父类的方法
(3)super()——调用父类的构造方法
2.1 super注意事项(1)super调用父类的构造方法,必须在构造方法的第一个
(2)super 必须只能出现在子类的方法或者构造方法中!
(3)super 和 this 不能同时调用构造方法
2.1 super与this不同 this :本身调用者这个对象
super : 代表父类这个对象的应用
this :没有继承也可以使用
super :只能在继承的条件下才可以使用
this :本类的构造
super :父类的构造