/**
* 通过类来体现类与类之间的关系:
* 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中的一种。
* }
*/
以上权当个人看法,如有问题,请您联系。