/** * 通过类来体现类与类之间的关系: * 1,创建动物类 * 2,创建猫类 * 3,创建狗类 * */ public class InheritDemo { public static void main(String[] args) { Animal animal = new Animal(); Dogo dogo = new Dogo(); Cat cat = new Cat(); //狗和狗类中没有定义公共访问方法,继承父类同样是可以使用。 dogo.setName("米奇"); dogo.setAge(12); dogo.setColour("白色"); dogo.setFood("肉"); cat.setName("汤姆"); cat.setAge(8); cat.setColour("黑色"); cat.setcFood("鱼"); //父类访问自己方法 System.out.println("--------------1--------------"); animal.eat(dogo.getName()); //子类访问访问父类方法 dogo.eat(dogo.getName()); cat.eat(cat.getName()); //-----上面子类继承后之间使用父类方法----- System.out.println("--------------2--------------"); cat.catFonction(); dogo.dogoFoncrtion(); //-----上面子类访问自己方法----- //animal.catFonction(); 会编译失败 System.out.println("--------------3--------------"); System.out.println("狗:"+dogo.getName()+","+dogo.getAge()+"," +dogo.getColour()+","+dogo.getFood()); System.out.println("猫:"+cat.getName()+","+cat.getAge()+","+ cat.getColour()+","+cat.getcFood()); } } //动物类 class Animal{ private String name; private String colour; private int age; //不带参数的构造方法 Animal(){} //不带参数的构造方法 Animal(String name,String colour,int age){ this.name = name; this.colour = colour; this.age = age; } public void eat(String name){ //查看那个类在访问当前方法 String f = this.getClass().getSimpleName(); System.out.println("当前"+f+"在访问"+","+this.name+",动物吃饭了"); } //提供公共的访问方法 public String getName() { return name; } public String getColour() { return colour; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setColour(String colour) { this.colour = colour; } public void setAge(int age) { this.age = age; } } //狗类 class Dogo extends Animal{ private String dFood; Dogo(){ //super(),继承后此时会默认生成super(),的引用。从而产生了关系 } Dogo(String name,String colour,int age,String food){ //继承父类属性 super(name, colour, age); //本类和成员变量重名用this区分 this.dFood = food; } public void dogoFoncrtion(){ System.out.println("狗狗会看家!"); } public String getFood() { return dFood; } public void setFood(String food) { this.dFood = food; } } //猫类 class Cat extends Animal{ private String cFood; Cat(){} Cat(String name,String colour,int age,String food){ //继承父类属性 super(name, colour, age); this.cFood = food; } public String getcFood() { return cFood; } public void setcFood(String cFood) { this.cFood = cFood; } public void catFonction(){ System.out.println("猫会抓老鼠!"); } }运行结果:
--------------1--------------
当前Animal在访问,null,动物吃饭了 -->注意:结果出来的是null,因为调用的对象是父类的方法,此父类对象(属性)还没有初始化。
当前Dogo在访问,米奇,动物吃饭了-->此时,是调用了父类方法,按照子类中私有属性和公共方法来初始化,所以就赋值成功。
当前Cat在访问,汤姆,动物吃饭了
--------------2--------------
猫会抓老鼠!
狗狗会看家!
--------------3--------------
狗:米奇,12,白色,肉
猫:汤姆,8,黑色,鱼
/**
* Java中支持单继承和多重继承不支持多继承
*多重继承
* class A{
* }
* class B extends A{
* }
* class C extends B{
* }
*
*单继承
* class A{
* }
* class B extends A{
* }
*
* 多继承(C支持,但是Java中,对他进行了修改,存在调用的不确定性)
* class A extends A,B{
*
* 注意存在关系才可以继承,A是B中的一种。
* }
*/
注意:上面代码是个人看法,如有问题,欢迎您们提出宝贵意见。