Java面向对象特性

1.封装性

Java中把对象的各个属性组合成一个独立单位 修饰符:

  1. default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
  2. private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  3. public : 对所有类可见。使用对象:类、接口、变量、方法
  4. protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
class Aclass {
	public void output() {
		System.out.println("class father");
	}
	private void privateoutput() {
		System.out.println("class私有方法");
	}
	public void getprivateoutput() {
		privateoutput();
	}
	
}

public class classfeature {

	public static void main(String[] args) {

		Aclass father1 = new Aclass();
		father1.output();
		father1.getprivateoutput();
	}

}

2. 继承性

  1. 子类拥有父类非 private 的属性、方法。
  2. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  3. 子类可以用自己的方式实现父类的方法。

Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。

示例代码

package featureextend;
//以下是父类
class Fatherclass{
	Fatherclass(){
		System.out.println("这是构造方法的输出");		//构造方法:方法名与类名一致,可以有参数,可以方法重载,不能有return,没有void修饰
	}
	
	void printastring(String str) {		//父类中的方法用default修饰的方法
		System.out.println(str);
	}
	void printastring() {		//父类中的方法用default修饰的方法
		System.out.println("无参数的方法,即printastring的方法重载");
	}
	protected void printhello() {		//父类中用proteced修饰的父方法;protect修饰的可以用于子类
		System.out.println("hello");		
		
	}
}
//以下是子类
class Sonclass extends Fatherclass  {
	void sunsprint() {
		System.out.println("子类的方法");
	}
}

public class Classextend {

	public static void main(String[] args) {
		Sonclass aobject=new Sonclass();		//这里会调用构造方法
		aobject.printastring("fatherprint");	//程序26行new的是子对象,但是它继承了父对象的方法
		aobject.printastring();					//同一个方法但不同参数的方法的重载 多态性
		aobject.printhello();					//父类中用protected关键字修饰的方法是可以继承到子类的
		aobject.sunsprint();                    //子类的方法也可以被调用
	}

}

3. 多态性

方法重写是一种多态性的体现

本例示例代码见我的github https://github.com/yangjinhaoaa/sdjzu_java_practice/githubjava-2019-10-8classfeature 和java-2019-10-9classfeatureextend