java三个特性(封装、继承及多态)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/newbie0107/article/details/88625189

java三大特性(封装、继承及多态)

封装

尽可能隐藏对象的内部实现细节,控制对象的修改及访问权限。
访问修饰符:private(可将属性修饰设为私有,仅本类可见)

public class Animal{
	private String name;
	private int age;
	private String sex;
	public Animal(){}
	public Anmal(String name, int age, String sex){
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	...
}

继承

优点:
1、子类可以使用父类中的属性和方法,也可以定义子类所独有的属性和方法,既有复用,又有较高的扩展性。
2、代码共享,减少创建类的工作量,提高了代码的重用性。
3、提高了产品或项目的开放性
缺点
1、继承是侵入式的,只要有继承,就必须拥有父类的属性和方法,让子类自由世界中多了些约束。
2、降低了代码的灵活性,当父类的常量、变量和方法被修改时,需要考虑子类的修改。
注意
1、Java为单继承,一个类只能有一个直接父类,但可以多级继承,属性和方法逐级叠加。
2、类中的构造方法,只负责创建本类对象,不可继承。

多态

父类引用指向子类对象,从而产生多种形态。
类之间具有直接或间接的继承关系时,父类引用可以指向子类对象,即形成多态。
注意
1、父类引用仅可以调用父类中所声明的属性和方法,不可调用子类都有的属性和方法。
2、使用父类引用调用父类中所声明的方法,依旧会根据重写原则,优先调用子类重写的方法。

多态的运用

1、使用作为方法参数

public abstract class Animal{
	public abstract void eat();
}

public class Dog extend Animal{
	@Override
	public void eat(){
		System.out.println("狗在吃骨头...");
	}
}

public class Cat extend Animal{
	@Override
	public void eat(){
		System.out.println("猫在吃鱼...");
	}
}

public class Brid extend Animal{
	@Overrid
	public void eat(){
		System.out.println("鸟在吃虫子...");
	}
}

public class People{
	private Animal animal;
	public setAnimal(Animal anmmal){
		this.animal = animal;
	}
	public void feed(){
		System.out.println("人开始喂食...");
		animal.eat();
	}
}

public class Client{
	public static void main(String[] args){
		People zhangSan = new People();
		zhangSan.setAnimal(new Dog());
		zhangSan.feed();
	}
}

运行结果如下:
人开始喂食…
狗在吃骨头…

2、 使用父类作为方法返回值

public abstract class Human{
	public abstract void speak();
}

public class YellowHuman extend Human{
	@Override
	public void speak(){
		System.out.println("我是黄种人");
	}
}

public class BlackHuman extend Human{
	@Override
	public void speak(){
		System.out.println("我是黑种人");
	}
}

public class People{
	public Human getPeople(String type){
		Human human = null;
		if(type.equeals("Yellow"))
			human = new YellowHuman();
		if(type.equeals("Black"))
			human = new BlackHuman();
		return human;
	}
}

public class Client{
	public static void main(String[] args){
		People people = new People();
		Human human = people.getPeople("Yellow");
		human.speak();
	}
}

猜你喜欢

转载自blog.csdn.net/newbie0107/article/details/88625189