多态注意点儿

public class Application {
	public static void main(String[] args) {
		//一个对象的实际类型是确定的
		//new Student   就是Student类型
		//new Person     就是Person类型
		
		Student s1 = new Student();//Student 子类能调用的方法是自己的或者继承父类的。
		Person s2 = new Student();//可以指向的引用类型不确定:父类的引用指向子类
		Object s3 = new Student();
		
		//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大。
		s2.run();  //子类重写了父类的方法,执行子类的方法
		s1.run();
		((Student)s2).eat();  //s2:父类类型的变量
	    //类型转换格式:子类类型  变量名 = (子类类型) 父类类型的变量 
		
	}
}

public class Student extends Person {

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("son");
	}
    public void eat() {
    	System.out.println("eat");
    }
    
}


public class Person {
	public void run() {
		System.out.println("run");
	}
}

多态

多态现实意义理解:

现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。
Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。

  • 多态体现为***父类引用变量可以指向子类对象。***
  • 前提条件:必须有子父类关系。
    注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
    • 多态的定义与使用格式
      定义格式:父类类型 变量名=new 子类类型();
    • 理解:
      多态是同一个行为具有多个不同表现形式或形态的能力。
      多态就是同一个接口,使用不同的实例而执行不同操作。
      在这里插入图片描述

Instanceof 和类型转换

public class Application {
	public static void main(String[] args) {
		Object object = new Student();
		
		// System.out.println(X instanceof Y); 判断左边对象是否是右边类或者子类的一个实例
		//Object > Person >Student
		System.out.println(object instanceof Student);//true
		System.out.println(object instanceof Person);//true
		System.out.println(object instanceof Teacher);//false
		System.out.println(object instanceof String);//false
		System.out.println("=====================");
		Person person = new Student();
		System.out.println(person instanceof Student);//true
		System.out.println(person instanceof Person);//true
		System.out.println(person instanceof Teacher);//false
		//System.out.println(person instanceof String);  编译报错
		System.out.println(person instanceof Object);//true
		
		//类型转换
		 //高                                        低
		Person obj = new Student();
		
		((Student) obj).run();                  
	}
}


public class Person {
		public void run() {
			System.out.println("run");
		}
}


public class Student extends Person {

}

public class Teacher extends Person{

}

instanceof是Java的一个保留关键字,左边是对象,右边是类,返回类型是Boolean类型。它的具体作用是测试左边的对象是否是右边类或者该类的子类创建的实例对象,是,则返回true,否则返回false。

instanceof使用注意事项
  • 先有继承关系,再有instanceof的使用。
  • 当该测试对象创建时 右边的声明类型和左边的类其中的任意一个 跟测试类必须得是继承树的同一分支或存在继承关系,否则编译器会报错。
instanceof 应用场景

需要用到对象的强制类型转换时,需要使用instanceof进行判断。
在这里插入图片描述

构造器

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值