Java面向对象三大特征:封装、继承、多态

102 阅读3分钟

Java面向对象三大特征:封装、继承、多态


封装:封装是一种做法,控制类内可访问属性或方法的访问权限

的做法

在设置变量的值时要通过指定的方法来设置,在方法内部可以加一些判断

可以通过:分包和访问权限修饰符来做控制,以及一些常见的封装做法

包:我们可以理解成文件夹,分包就是分文件夹来管理不同的类

同一包下不能有同名类,不同包的类之间要使用import导包

访问修饰符:访问的权限大-->小public protected  不写 private

private 在当前类中可访问(需要get和set方法)
default 在当前包内和访问
protected 在当前类和它派生的类中可访问
public 公众的访问权限,谁都能访问

封装的一般做法

   将本类的所有成员变量私有化提供公共访问权限的设置setXXX方法和获取getXXX方法、 例如: ` public class aaa04 {

private String name;

private int age;

private String sex;

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 String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public static void main(String[] args) {

aaa04 b1=new aaa04();

b1.setAge(20);

b1.setName("小王");

b1.setSex("男");

System.out.println("我叫"+b1.getName()+",今年"+b1.getAge()+"岁,性别为"+b1.getSex());

}

}


继承:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。  

   继承的特点:当发生继承时,子类就重用了父类的方法和字段,并且子类还可以添加新的方法和字段来满足需求。

   继承的优点:

   extends:java中类的继承是单一的,一个子类只能有一个父类,extends只能继承一个类,

          但是object除外  Java中object是一切类的间接类

并且java中的类可以多层继承,不能环形继承!!

   super:super代表的是父类对象的引用

          可以用super来区分子类父类中成员的重名

          可以在子类的构造方法中,通过super关键字调用父类的构造方法 例如:

` public class aaa05 {

String name;

int age;

String sex;

public aaa05() {

public aaa05(String name, int age) {

this.name = name;

this.age = age;

}

} public class aaa06 extends aaa05 {

public aaa06() {

}

public aaa06(String name,int age) {

super(name,age);

}

}

注意这种用法要在子类构造方法中的首行

构造方法不能被继承


 小记this和super:

    this用在本类的成员方法中,指代当前对象

    this用在本类的构造方法中,this()指代其他构造必须用在首行

    super用在子类的成员方法中,指代父类的引用

    super用在子类的构造方法中,super()指代父类的构造必须用在首行

    super和this都要在首行不能一起存在

多态:对象的多态性,父类的引用指向子类的对象(或子类的对象赋给父类的引用)

     多态存在的三个必要条件:继承、重写、父类引用指向子类对象

    多态转型:

        向上转型:当子类对象赋值给一个父类引用时,就是向上转型

           格式:父类类型  变量名=new 子类类型();

       向下转型:通过强制类型转换格式,将父类引用转为子类格式

      格式:子类类型 变量名=(子类类型)父类类型的变量

      例如:

public class test0708 {

public static void main(String[] args) {

aaa07 a07=new aaa08();

a07.eat();

aaa08 a08=(aaa08)a07;

a08.eat();

}

}

public class aaa07 {

public void eat() {

System.out.println("在吃东西");

}

}

public class aaa08 extends aaa07{

public void eat(){

System.out.println("小刘在吃东西");

}

}

`

`