接口、继承和多态
程序员文章站
2022-06-13 21:13:29
...
package com.java.exp10;
import sun.font.EAttribute;
/**
* 1、类的继承
* 继承并不只是扩张父类的功能,还可以重写父类的成员方法。
* 重写,保留父类的成员方法的名称,重写成员方法的实现内容,更改成员方法的存储权限或更改返回值类型。
* 重构,与父类的成员方法返回值、方法名称、参数类型及个数完全相同,唯一不同的是方法的实现内容。
* 重写父类方法时,修改方法的修饰权限只能从小范围到大的范围改变。
* 实例化子类对象时,父类无参构造方法被自动调用,但有参构造方法并不能被自动调用,只能依赖于super关键字显式地调用父类的构造方法
* 2、Object类
* Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写。为final类型
* getClass()方法
* toString()方法 将一个对象返回为字符串形式
* equals()方法 比较的是两个对象的实际内容
* 3、对象类型的转化
* 3.1、向上转型 直接使用,继承于抽象,可看作父类的一种
* 3.2、向下转型 使用显式类型转换,向编译器指明将父类对象转换为哪一种类型的子类对象
* 4、使用instanceof操作符判断对象类型
* myobject instanceof ExampleClass
* 某类的饮用对象 某个类
* instanceof是Java语言中的关键字,在Java语言中的关键字都为小写,其返回值是Boolean类型的
* 5、方法的重载
* 方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或者类型不同即可。
* 6、多态
* Java实现多态有三个必要条件:继承、重写、向上转型
* 提高了代码的扩展性
* 7、抽象类和接口
* 7.1、抽象类
* abstract是定义抽象类的关键字,它定义的方法称为抽象方法,抽象方法没有方法体
* 继承抽象类的所有子类必须将抽象类中的抽象方法记性覆盖
* 抽象类不能实例化对象
* 7.2、接口
* 接口简介
* 接口是抽象类的延伸,可以将它看作纯粹的抽象类,接口中的所有方法都没有方法体
* 在接口中定义的方法必须被定义为public或abstract形式,其他修饰权限不被Java编译器认可
* 在接口中定义的任何字段都自动是static和final的
* 接口与继承
* Java中不允许多重继承,但是使用接口就可以实现多重继承,以为一个类可以实现多个接口,使用逗号隔开就可以
*
* */
public class Demo {
public static void main(String[] args) {
Demo demo = new Demo();
String str = demo.getClass().getName();
System.out.println(str);
}
}
Animal类
package com.java.exp10;
public class Animal {
public void shout(Animal animal){
System.out.println("叫...");
}
public static void eat(Animal animal){
System.out.println("吃...");
}
}
Dog类
package com.java.exp10;
public class Dog extends Animal {
public void eat(){
System.out.println("啃骨头...");
}
//向上转型后只能实现父类中的方法,即使在子类中重写过了,因为使用的是父类的对象,所以不能调用子类
public static void main(String[] args) {
Dog dog = new Dog();
eat(dog);
}
}
Person类
package com.java.exp10;
public class People {
String name;
int age;
public People() {
System.out.println("父类无参构造方法被调用...");
}
public People(String name, int age) {
this.name = name;
this.age = age;
System.out.println("父类有参构造方法被调用...");
}
}
Student类
package com.java.exp10;
public class Student extends People {
String name;
int age;
public Student() {
System.out.println("子类无参构造方法被调用...");
}
public Student(String name, int age) {
this.name = name;
this.age = age;
System.out.println("子类有参构造方法被调用...");
}
public static void main(String[] args) {
Student stu = new Student("张三",15);
}
}
上一篇: 分享最近发掘的恋歌网站降权的原因
下一篇: 网站用户体验——不要忽略看不见的特性