LENOVO-PC_刘甲波12.10

object

object类是java定义API,该类表示所有类的最高层,object类没有父类,object类是所有类的父类。所有类都直接或间接地继承了java.lang.object类。object类是所有类的祖先。在定义一个类时,没有使用extends关键字,也就是没有继承具体的某个类,那么这个类就直接继承了object类。所有对象都继承了object类。

object类中重要的方法:1.equals 2.toString

方法重写

子类继承父类后,如果子类发现父类的方法不能满足子类的需求,此时子类可以在子类中重新定义父类的方法来满足自己的需求,这种重新定义父类的方法就叫方法重写。

方法重写;override

方法重载:overload

方法重写的规则

1.重写方法与被重写必须有相同的方法名称

2.重写方法与被重写方法必须有相同的参数列表。

3.重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。

4.重写方法不能缩小被重写方法的访问权限。

方法重载与方法重写的区别

方法重载是在同一个类内有多个方法名相同,参数的(个数,数据类型,顺序)不同,与返回值类型无关。

方法重写是子类重写父类的方法,子类和父类的方法名必须相同,参数列表相同,返回值类型相同。

继承中的protected

protected是访问修饰符,是专门为继承而设计的访问修饰符。protected修饰的属性或方法,在同包或者子类中可以被访问。在不同包的子类中也可以被访问。

多态

多态是面向对象的特征之一。

什么是多态?

1.多态是多种形态,是指同一个行为有多种表现。

2.多态:父类的引用pet指向子类实例dog。

3.只能调用子类从父类继承的方法或者被子类重写的方法(父类知道子类有什么方法就调用什么方法)

4.父类不能调用子类的 新增的方法,因为父类无法知道子类新增了什么方法。

5.如果子类重写了父类的方法,那么父类引用调用的就是子类的方法(父类引用指向那个子类就调用那个子类的方法)。

6.父类引用指向子类对象时需要类型转换。

7.符类引用=子类对象 ,不需要强制转换 Pet pet=dog;

8.子类引用=父类引用 ,需要强制转换 Dog dog=(Dog)pet;

9.多态一定存在于继承关系中

10.多态一定存在于方法重写中

11.多态一定存在于父类引用指向子类对象中,父类引用指向那个子类就调用那个子类的方法。

12.方法重写实现了多态

示例:

public class Pet {
public void toHospital() {
System.out.println("宠物看病");
}
}

public class Dog extends Pet {
public void toHospital() {
System.out.println("狗狗看病");
}
public void catchingFlyDisc() {
System.out.println("接飞盘");
}
}

public class Bird extends Pet {
public void toHospital() {
System.out.println("小鸟看病");
}
public void fly() {
System.out.println("飞翔");
}
}

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入宠物,1:狗狗; 2:小鸟");
int choice = input.nextInt();
Pet pet = null;
switch(choice) {
case 1:
pet=new Dog();
break;

    case 2:
        pet=new Bird();
        break;
    }
    pet.toHospital();
    if(pet instanceof Dog) {
        Dog dog =(Dog)pet;
        dog.catchingFlyDisc();
    }
    if(pet instanceof Bird) {
        Bird bird=(Bird)pet;
        bird.fly();
    }
}

}

instanceof运算符

if(pet instanceof Cat) {

Cat cat = (Cat) pet;

cat.climbTree();

}

instanceof运算符用于判断一个引用是否指向某个类的实例,返回boolean值。

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1