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

【封装】
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;
原文地址:https://www.cnblogs.com/dadada-jiasheng/p/8750025.html