封装
概念:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问。
特点:提高代码的复用性;
隐藏类的实例细节,方便修改和实现;
提高代码的安全性。
实现步骤:修改属性的可见性------>设为private
创建getter/setter方法--------->用于属性的读写
在getter/setter方法中加入属性控制语句---------->对属性值的合法性的判断
private修饰符
private关键字:私有的,可修饰成员变量和成员方法
特点:只能在本类中访问被private修饰的成员
代码:
package com.oracle.demo3;
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean compare(Person p) {
return this.age == p.age;
}
}
测试代码:
package com.oracle.demo3;
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.setAge(18);
p1.setName("张三");
p2.setAge(18);
p2.setName("李四");
boolean flag = p1.compare(p2);
if(flag){
System.out.println("两个人年龄相同");
}else{
System.out.println("两个人年龄不相同");
}
}
}
this关键字
this关键字代表当前对象 本类中
this.属性 操作当前对象的属性
this.方法 操作当前对象的方法
成员变量和局部变量的同名问题:
可以在成员变量名前面加上this.来区别成员变量和局部变量
继承
继承是类与类之间的一种关系,可以说是一种 is a 的关系 把多个类中相同的内容提取到一个类中。
继承的好处:
子类拥有父类所拥有的属性和方法;
实现了代码的复用。
弊端:增强了类与类之间的耦合性。因为开发要求是高内聚低耦合的。
语法规则: class 子类 extends 父类{}
注意:1、在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类
2、多个类可以继承一个父类
3、在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类
4、在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类
继承中成员变量的特点:
成员变量:如果子类父类中出现不同名的成员变量,这时的访问是没有任何问题。
如果子类父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成。super用来表示当前对象中包含的父类对象空间的引用。
继承中成员方法的特点: 就近原则
子类中的方法和父类中的方法声明是一样的;
通过子类调用方法:先找子类中有没有这个方法,有就调用。子类中没有就看父类,有就调用。父类中还没有就再接着找,如果没有就报错。
方法的重写
如果子类对父类中的方法不满意可以重写父类的方法,直接在子类中去写,调用的时候会优先调用子类中的方法。
语法规则:返回值类型、方法名、参数类型及个数都要与父类相同。
重写的方法直接在子类中去写,然后用super关键字去调用父类中的方法。
注意:1、父类中私有方法不能被重写,因为父类的私有方法子类根本不能去继承;
2、子类重写父类中的方法时,访问权限不能更低;
3、父类的静态方法,子类必须通过静态方法才能重写。
方法的重载
在本类中出现的方法名一样,参数列表不同的方法,与返回值无关。