一、封装
封装:将一个对象的属性进行私有化,同时提供一些可以被外部访问的接口,统一接口通过(get/set)来进行访问,保证私有属性的安全性。
封装的作用:
-
隐藏代码的实现细节
-
提高代码的安全性,保护数据
-
提高系统可维护性
-
统一访问接口
访问修饰符权限:
修饰符 | 本类中 | 同一个包下 | 不同包 | 任何类 |
private | ∨ | |||
default | ∨ | ∨ | ||
protocted | ∨ | ∨ | ∨ | |
public | ∨ | ∨ | ∨ | ∨ |
对该类进行封装,可通过get/set方法进行对该类访问
//修饰符改为私有的,控制该属性的访问权限
//private:访问权限私有
private int id;
private String name;
private int age;
//使用get/set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
二、继承
继承:继承就是子类继承父类所有非私有的属性和方法,子类在父类的基础之上进行扩展,Java中只有单继承没有多继承,一个父类可以有多个子类,一个子类只能有一个父类。
//父类
public class Dome1{
public void FlTest(){
System.out.println("父类");
}
}
//子类
//子类Dome2继承父类Dome1
//通过 extends 继承
public class Dome2 extends Dome1{
public static void main(String[] args) {
Dome2 dome2=new Dome2();
dome2.ZlTest();
}
public void ZlTest(){
//调用父类的构造器,必须在子类构造器的第一行
super.FlTest();
System.out.println("子类");
}
}
super:
- 表示在子类的构造方法中调用父类的方法
- super必须只能出现在子类的方法或构造方法之中
- super调用父类的方法,必须在构造方法的第一行
- super只能在继承条件下,在子类使用
- super和this不能同时调用
this:
- 表示表用本类的方法
- this必须在构造方法的第一行
- this不能和super同时使用
对重写详解网址:重载和重写的区别_s15038811780的博客-CSDN博客
三、多态
多态即一个相同的方法,根据发送对象的不同可以采用多种不同的行为方式。即同一种形式,有多种不同的表达方式
多态存在的三个必要条件:继承、重写、父类引用指向子类对象
//父类
public class A {
public void Ast(){
System.out.println("A");
}
}
//子类
public class B extends A {
public static void main(String[] args) {
//B 子类型,子类继承父类的,所有调用Bst方法
B a = new B();
a.Bst();
//A 父类型,可以指向子类,但是不能调用子类的方法,只能调用父类的方法
A b = new B();
b.Ast();
}
public void Bst() {
System.out.println("B");
}
/*
* 输出:
* B
* A
* */
}
多态中方法的重写:
//父类
public class A {
public void Ast(){
System.out.println("A");
}
}
//子类
public class B extends A {
public static void main(String[] args) {
//B 子类型,子类继承父类的,所有调用Bst方法
B a = new B();
a.Bst();
//A 父类型,可以指向子类,但是不能调用子类的方法,只能调用父类的方法
A b = new B();
b.Ast();
}
public void Bst() {
System.out.println("B");
}
//方法的重写,父类和子类的方法名、无参都一样,子类对父类的输出进行的覆盖
public void Ast(){
System.out.println("AA");
}
/*
* 输出:
* B
* AA
* */
}