public class Animal{ public double weight; public void eat(){ System.out.println("动物在吃东西"); } } public class Dog extends Animal{ public void say(){ System.out.pringln(“狗叫:汪汪汪”); } public static void main(String[] args) { Dog d= new Dog(); d.weight = 150; weight属性和eat方法,是从父类中继承,且访问权限没发生变化 d.eat(); d.say(); } }
public class Bird{ public void fly(){ System.out.println("I'm fly~"); } } public class Ostrich extends Bird{ //重写Bird类的fly方法----方法覆盖(override) public void fly(){ System.out.println("I only work on the land~"); } public static void main(String[] args){ Ostrich os = new Ostrich; os.fly(); //调用的是Ostrich的fly? } }
public class Ostrich extends Bird{ … … //子类中原有的内容 public void callOverridedMethod(){ super.fly(); //输出“我在飞” } public static void main(String[] args){ Ostrich os = new Ostrich; os.fly(); //奔跑 os.callOverridedMethod() //飞 } }
属性,子类父类同名,子覆父。子方法直接访问子属性,super访问覆盖的父属性
class BaseClass{
public int a = 5;
}
class SubClass extends BaseClass{
public int a = 7;
public void accessOwner(){
System.out.println(a); //7
}
public void accessBase(){
System.out.println(super.a); //5
}
public static void main(String[] args){
SubClass sc = new SubClass;
System.out.printlv(sc.a); //7
sc.accessOwner(); //7
sc.accessBase(); //5
}
}
class Base{ public double size; public String name; public Base(double size,String name){ this.size = size; this.name = name; } } public class Sub extends Base{ public String color; public Sub(double size, String name, String color){ super(size,name); this.color = color; } public static void main(String[] args){ Sub s = new Sub; System.out.println(s.size + "--" +s.name + "--" + s.color); } }
class Base{ protected double size; public Base(){ size=0; System.out.println(“Base类无参构造”); } public Base(double s){ size=s;System.out.println(“Base类有参构造”); } } public class Sub extends Base{ private String color; public Sub(){ color=“blue”;System.out.println(“Sub类无参构造”); } public Sub(String c){ color=c;System.out.println(“Sub类有参构造”); } public static void main(String[] args){ Sub s1=new Sub(); Sub s2=new Sub(“red”); } } Base类无参构造 Sub类无参构造 Base类无参构造 Sub类有参构造
class Creature(){
public Creature(){
System.out.println("Creature无参的构造函数");
}
}
class Animal extends Creature{
public Animal(String name){
System.out.println("Animal带一个参数的构造方法,该动物的name为"+name);
}
public Animal(String name , int age){
this(name);
System.out.println("Animal带2个参数的构造方法,该age为"+age);
}
}
public class Wolf extends Animal{
publioc Wolf(){
super("土狼",3);
public Animal(String name){
this(name);
System.out.println("Wolf"无参构造方法);
}
public static void main(String[] args){
new Wolf();
}
}
上到下运行,如果某个父类通过this调用同类中的构,就会依次执行此父类的多个构。