欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于面向对象(OOB)的一些理解。主要是封装、继承、多态。

程序员文章站 2024-03-14 21:25:53
...

【封装】
1.将类的属性进行私有化处理,不允许外部程序直接访问。并对外提供统一的方法,设置和读取私有属性。
2.实现访问控制,限制属性访问。
优点:只能通过规定的方法访问数据,方便在方法中加入控制语句,防止不合法赋值。
3.除了属性的封装之外,将需要重复使用的代码提取到方法中加入控制语句,防止不合法赋值。
public class Demo01_Test {
private String person;

public String getPerson() {
    return person;
}

public void setPerson(String person) {
    this.person = person;
}

}

【继承】

1.子类继承父类使用extends关键字
2.不能继承父类的私有属性。
3.子类中访问父类成员需要使用super关键字。super.name
super.属性 访问父类属性
super.方法 访问父类方法

如果,子类中没有同名的属性和方法覆盖父类,则依然可以直接使用this。属性调用从父类中继承的非私有属性。
但是,如果子类中重写了与父类同名的属性:this.属性访问的是本类;super.属性访问的时父类属性。

在子类的构造函数中使用super();调用父类构造。而且super()函数必须在子类构造的第一行。
注意:即使使用super关键字也不能访问父类的私有属性和私有方法。

private 本类
friendly(默认)本类 本包
protected 本类 本包 非同包子类
public 本类 本包 非同包子类 其他任何包

注意:protect在非同包子类中只能通过子类对象访问,不能直接调用或通过父类对象访问。

父类属性》》父类构造》》》子类属性》》子类构造

在java中继承只能单继承。但可以多层继承。
public class test1(){}
public class test2 extends test1(){}
public class test3 extends test2(){}

【多态】
1.同一种事物,由于条件不同展示出不同的结果,叫做多态。
例:
英国人说英国话,中国人说中国话,不叫多态。
同样是人,有人说中华,有人说或英国华,这交多态

 2.程序中的多态:同一个引用类型,由于使用不同的对象实力,而执行不同的操作。
        Chinese c = new Chinese();  c.say();
        English e= new English();   e.say();
        英国人说英国华,中国人说中国话,这不叫多态。
  
 
        Person p = new Chinese();   p.say();
        Person p = new English();   p.say();
        同样是人,有人说中国话,有人说英国华,这就是多态。
    
 [实现多态的条件]
  1.子类继承父类。
  2.子类重写父类的方法。
  3.父类引用指向子类对象。//保证:同一个父类引用类型,用不同的子类实现不同的方法。
  
 
 【父子类转型】
  [向上转型]
 
  子类向父类转,自动转换。o 
  Person p=new Chinese();
  
  特点:绝对安全。子类独有的属性和方法将会丢失。只能调用父类中存在的属性和方法。
        如果父类方法不是抽象方法,调用时执行的方法体依然是子类的。
  
  应用:多态中父类引用指向子类对象。
  
  [向下转型]
  父类向子类转:强制转换。
  Person p=new English();
  Chinese c =()Chinese p;//ClassCastException  类转换异常:因为p不是Chinese的实例,强转会造成类转换异常。
  
     Person p=new Chinese();
  Chinese c =()Chinese p;//ClassCastException  因为p是Chinese的实例,可以强制转换。
 
  [转换异常解决方法]:
  经常出现类转换异常。用instanceof检测父类引用是不是子类的实例。
  
  if(p instanceof Chinese){
    Chinese c =(Chinese) p;