把一系列功能打包到一起,只提供使用这些功能的界面;
即将一系列相关事物的共同的属性和行为提取出来,放到一个类中,隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
封装的关键就是绝不能让类中的方法直接访问其他类中的数据,程序仅通过对象的方法与对象的数据进行交互
让类与类之间产生父子关系
子类继承父类后,子类拥有了父类的非私有成员(成员变量,成员方法)
public class ExtendDemo01 { public static void main(String[] args) { Child child=new Child(); child.setAge(22);//调用父类方法 //child.age; age属于父类的私有成员变量,子类无法继承 System.out.println(child.getAge()); } } class Child extends Parent{ } class Parent{ public Parent(){} private String name; private int age; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }
继承关系中类成员的使用
继承关系中父类成员变量的使用:
如果子类与父类中定义了同名的成员变量,如何使用?
①子类中定义成员变量int price=20
②父类中定义成员变量int price=10
③子类成员方法中定义局部变量int price=5
④子类成员方法中分别输出三个price的值
public class ExtendDemo03 { public static void main(String[] args) { Apple apple=new Apple(); apple.showPrice();//有局部变量时,输出5 //没有局部变量,有子类成员变量时,输出10 //都没有时,输出20 } } class Apple extends Fruit{ //int price=10; public void showPrice(){ //int price=5; System.out.println(price); } } class Fruit{ int price=20; }
Java中使用变量的规则:遵循就近原则。局部位置有就使用,没有就去本类的成员位置找,有就使用,没有就去父类的成员位置找,有就使用,没有就报错。
System.out.println(this.price);//本类中的成员变量
System.out.println(super.price);//父类中的成员变量
super表示当前对象父类的引用
原文:https://www.cnblogs.com/wyj96/p/11749207.html