版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/newbie0107/article/details/88625189
封装
尽可能隐藏对象的内部实现细节,控制对象的修改及访问权限。
访问修饰符: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();
}
}