一.封装
定义:将类的信息隐藏在类内部,不允许外部程序直接访问而是通过该类提供的方法来实现对隐藏信息的操作和访问。
好处:只能通过规定的方法访问数据、隐藏类的实例细节,方便修改和实现,减少耦合
1.修改属性可见性:前面加private,,属性设置为私有的,只能本类才能访问,其他类访问不了
public class Telphone {
//1.修改属性可见性,前面加private
private float screen;
private float cpu;
private float mem;
2. 提供对外的公共方法访问,创建getter/setter方法:用于属性读写。其中this关键字为了解决实例变量和局部变量之间的同名冲突。
//getter/setter方法:用于属性读写
//得到属性值
public float getScreen(){
return screen;
}
//给属性赋值
public void setScreen(float screen){
this.screen = screen;
}
3. 在getter/setter方法中加入属性控制语句:对属性值的合法性进行判断
public class InitalTelpone {
public static void main(String[] args) {
Telphone phone2 = new Telphone(2.3f,4.5f,3.3f);
//封装后不能直接调用
phone2.setScreen(6.0f);
System.out.println("Screen"+phone2.getScreen());
}
}
二.继承
1.继承:子类继承父类非private的属性和方法,实现代码复用。Java中为单继承,一个类只有一个父类
使用extends关键字,实现Dog子类对Animal父类的继承
public class Animal extends Object {
public int age = 10;
public String name;
public void eat(){
System.out.println("动物具有吃东西的能力");
}
public class Dog extends Animal {
public void eat(){
super.eat();
}
2.方法重写:若子类对父类方法不满意,可以重写父类,当调用方法时优先调用子类的方法
语法规则:返回值类型、方法名、参数类型及个数都要与父类相同。
public class Animal extends Object {
public int age = 10;
public String name;
public void eat(){
System.out.println("动物具有吃东西的能力");
}
public class Dog extends Animal {
public int age = 20;
public void eat(){
System.out.println("狗具有吃东西的能力");
}
三.多态
多态即对象的多种形态,包括引用多态和方法多态。继承是多态的实现基础
1.引用多态:父类引用指向本类的对象,父类的引用可指向子类的对象
public class Inital {
public static void main(String[] args) {
//父类引用指向本类对象
Animal obj1 = new Animal();
//父类引用指向子类对象
Animal obj2 = new Dog();
//子类不可指向父类
//Dog d = new Animal();
2.方法多态:创建本类对象时调用的方法为本类方法,同样是父类引用,指向对象不同时调用的方法也不同
创建子类对象时调用的方法为子类重写的方法或继承的方法
public class Inital {
public static void main(String[] args) {
//父类引用指向本类对象
Animal obj1 = new Animal();
//父类引用指向子类对象
Animal obj2 = new Dog();
//子类不可指向父类
//Dog d = new Animal();
//调用父类中方法
obj1.eat();
//调用子类中方法
obj2.eat();