php做的网站怎么运行,wordpress.org配置,做网站的需要注册商标吗,网站备案后名称怎么改1.继承
1.1 定义
让类与类之间产生子父类关系#xff0c;有了继承性之后#xff0c;子类就获取到了父类中声明的所有属性和方法。
1.2 优点
继承的出现减少了代码冗余#xff0c;提高了代码的复用性。继承的出现#xff0c;更有利于功能的扩展。继承的出现让类与类之间…1.继承
1.1 定义
让类与类之间产生子父类关系有了继承性之后子类就获取到了父类中声明的所有属性和方法。
1.2 优点
继承的出现减少了代码冗余提高了代码的复用性。继承的出现更有利于功能的扩展。继承的出现让类与类之间产生is-a关系为多态的使用提供了前提。继承描述事物之间的所属关系可见父类更通用、更一般子类更具体。
1.3 继承特点
Java只支持单继承针对于类一个父类可以声明多个子类但是一个子类只能有一个父类不支持多继承。Java支持多层继承可以划分为直接父类和间接父类。
1.4 注意事项
子类只能继承父类的所有非私有成员。子类不能继承父类的构造方法但可以通过super关键字访问父类构造方法。
1.5 默认的父类
Java中声明的类如果没有显式声明其父类时则默认继承于java.lang.Object类
2. super关键字
2.1 为什么需要super
super代表对当前父类的引用 在子类中需要调用父类中被重写的方法以及在子类中区分子类和父类同名的属性。
2.2 super可以调用的结构
2.2.1 属性和方法
子类继承父类以后就可以在子类的方法或构造器中调用父类中声明的属性或方法满足封装性的前提下。调用时需要使用super.的结构表示调用父类的属性或方法。子类中重写了父类的方法或子父类中出现了同名的属性时则必须使用super.的声明显式地调用父类被重写的方法或父类中声明的同名的属性。
2.2.2 构造器
子类继承父类时不会继承父类的构造器只能通过super(形参列表)的方式调用父类指定的构造器。super(形参列表)必须声明在构造器的首行。在构造器的首行super和this关键字只可以出现一个。如果在子类构造器的首行既没有显式调用this(形参列表)“也没有显式调用super(形参列表)”则子类此构造器默认调用super()即调用父类中空参的构造器。结合3和4可以得到结论子类的任何一个构造器中要么会调用本类中重载的构造器要么会调用父类的构造器只能是这两种情况之一。由5可以得到结论一个类中声明有n个构造器最多有n-1个构造器中使用了this(形参列表)“则剩下的那一个一定使用super(形参列表)”。
区别
this既可以调用本类成员变量也可以调用父类成员变量而super只可以调用父类的成员变量this调用本类构造方法super调用父类构造方法this既可以调用本类成员方法也可以调用父类成员方法而super只可以调用父类的成员方法
练习题
public class demo34 {public static void main(String[] args){Cat c1 new Cat(白色,4);System.out.println(c1.getColor() c1.getLeg());c1.eat();c1.catMouse();System.out.println(-----------------------);Dog d1 new Dog(黑色,4);System.out.println(d1.getColor() d1.getLeg());d1.eat();d1.lookHome();}
}/*
猫狗练习
属性毛的颜色腿的个数
行为吃饭
猫特有行为抓老鼠
狗特有行为看家*/class Animals{private String color;private int leg;public Animals(){}public Animals(String color,int leg){this.color color;this.leg leg;}public void setColor(String color) {this.color color;}public String getColor() {return color;}public void setLeg(int leg) {this.leg leg;}public int getLeg() {return leg;}public void eat(){System.out.println(吃饭);}
}class Cat extends Animals{public Cat(){}public Cat(String color,int leg){super(color, leg);}public void eat(){System.out.println(猫吃鱼);}public void catMouse(){System.out.println(抓老鼠);}
}class Dog extends Animals{public Dog(){}public Dog(String color,int leg){super(color, leg);}public void eat(){System.out.println(狗吃肉);}public void lookHome(){System.out.println(看家);}
}3.方法的重写overwrite/override
3.1 为什么需要方法的重写
子类在继承父类以后就获得了父类中声明的所有的方法。但是父类中的方法可能不太适用于子类。即子类需要对父类继承过来的方法进行覆盖、覆写的操作定义。
3.2 方法重写应遵循的规则
父类被重写的方法与子类重写的方法的方法名和形参列表必须相同。子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符。注意子类不能重写父类中声明为private权限修饰符的方法。父类被重写的方法的返回值类型是void则子类重写的方法的返回值类型必须是void。父类被重写的方法的返回值类型是基本数据类型则子类重写的方法的返回值类型必须与被重写的方法的返回值类型相同。父类被重写的方法的返回值类型是引用数据类型类则子类重写的方法的返回值类型可以与被重写的方法的返回值类型相同或是被重写的方法的返回值类型的子类。子类重写的方法抛出的异常类型可以与父类被重写的方法抛出的异常类型相同或是父类被重写的方法抛出的异常类型的子类。