面向对象的三大特征

封装

使用设计对象;

将需要处理的数据以及处理方法设计到对象的类中。

优点:更好的维护数据;

           使用者无需关心内部实现,只要知道如何使用即可。

继承

让类与类之间产生一种关系——子父类关系,子类可以直接使用父类中的非私有成员

优点:

1)继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员。

2)提高了代码的复用性(多个类相同的成员可以放到同一个类中)。

3)提高了代码的维护性(如果方法的代码需要修改,修改一处即可)。

多态

1.概念

同一个对象在不同时刻表现出来的不同形态。

2.前提

要有继承或实现关系;要有方法重写;要有父类引用指向子类对象。

3.成员访问特点:

成员变量编译看父类,运行看父类。

成员方法编译看父类,运行看子类。

4.好处

提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作。

5.弊端

不能使用子类的特有成员。

6.转型

向上转型:父类引用指向子类对象就是向上转型。

向下转型:格式:子类型 对象名 = (子类型)父类引用


 Animal父类

public class Animal {
	protected String name;

	public Animal(String name) {
		this.name = name;
	}
	
	public void eat() {
		System.out.println("这个是父类的吃饭方法");
		System.out.println("父类"+this.name+"正在吃饭");
	}
}

Bird 子类

public class Bird extends Animal{

	public Bird(String name) {
		super(name);
	}
	
	public void fly(){
		System.out.println("鸟在飞");
	}
	
	@Override
	public void eat() {
		
		System.out.println("子类鸟"+this.name+"正在吃饭");
	}

}

Dog子类

public class Dog extends Animal{

	public Dog(String name) {
		super(name);
	}
	
	public void run() {
		System.out.println("我是一只小狗,我在跑跑跳跳");
	}
	
	@Override
	public void eat() {
		
		System.out.println("子类狗"+this.name+"正在吃饭");
	}


}

实现类

public static void main(String[] args) {
//		向上转型  父类的引用指向子类
//		父类的类型 对象名 = new 父类类型
		
		Animal yuanyuan  = new Bird("圆圆");   
		Animal animal2 = new Dog("豆豆");
		yuanyuan.eat();//子类鸟圆圆正在吃饭
		animal2.eat();//子类狗豆豆正在吃饭
		
//		先判断一下这个数据类型是否是对应-的类型
//		ClassCastException
//		子类类型 子类名 = (子类类型)父类名,向下转型
		if(yuanyuan instanceof Bird) {
			Bird b = (Bird)yuanyuan;
			b.fly();//鸟在飞
		}else {
			System.out.println("不是对应的数据类型");
		}
	
		
		
		
		
		
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值