Java面向对象特性
1.封装性
Java中把对象的各个属性组合成一个独立单位
修饰符:
- default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- public : 对所有类可见。使用对象:类、接口、变量、方法
- 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. 继承性
- 子类拥有父类非 private 的属性、方法。
- 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
- 子类可以用自己的方式实现父类的方法。
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