文章目录
前言
本篇文章介绍的是面向对象的三大特征。
提示:以下是本篇文章正文内容,下面案例可供参考
一、封装
1.概念
是面向对象三大特征之一(封装,继承,多态),是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象內部的,外界是无法直接操作的
2.原则
将类的某些信息隐藏在类內部,不允许外部程序直接访成员变量直接访问,而是通过该类提供给的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()/setXxx()方法
3.优点
通过方法来控制成员变量的操作,提高代码的安全性;把代码用方法进行封装,提高代码的复用性
4.步骤
(1)给属性添加修饰符
修饰符由public、private、protected、默认修饰。(这些可以看我之前的博客的详细介绍,关键字)
代码如下(示例):
class A{
public String name;
private int age;//private修饰的age只能在本类里面用,如果要用,必须要用我们要求的方法来访问
}
(2)构造方法
构造方法的具体介绍在前面《类和对象的概念》有提到,有不懂可以点此处 ------->构造方法。
代码如下(示例):
class A{
public String name;
private int age;
public A(){}
public A(String name,int age){
this.name=name;
this.age=age;
}
}
(3)提供属性的set、get方法
其中set方法是给对象提供一个值(一般是提供值和修改值时用),get是获取该对象的值。所以这个方法的修饰符一般用public修饰。
代码如下(示例):
class A{
public String name;
private int age;
public A(){}
public A(String name,int age){
this.name=name;
this.age=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;
}
}
提示:上述的构造方法和属性的set、get方法有可以IDEA提供,快捷键Alt+Inter。Constructor和Getter and Setter。
二、继承
1.概念
继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法。
2.格式
class 子类 extends 父类 { }
代码如下(示例):
public B extends A{}
该处使用的url网络请求的数据。
3.好处与坏处
(1)好处
提高代码的复用性(把几个类里面的共同的属性放到一个类里面)和维护性(需要修改方法时,只需要修改一个就可以了,不用修改多个)
(2)坏处
提高了代码之间的耦合性。父类与子类之间有关联,当父类改变时子类也要改变,因为子类中含有父类的所有方法。
4.继承中访问特点
可以看前面的博客,点它------------>继承的访问特点
5.继承的注意事项
(1)Java中类只支持单继承,不支持多继承
(2)Java中类支持多层继承
6.案例
代码如下(示例):
public class A {
private String name;
private int age;
public void write(){
System.out.println("父类A");
}
}
public class B extends A{
public int StudentNumber;
public void read(){
System.out.println("子类B");
}
}
public class text {
public static void main(String[] args) {
B b = new B();
b.read();
b.write();//子类也能访问父类的方法
}
}
三、多态
1.概念
同一个对象,在不同时刻表现出来的不同形态
2.前提
要有继承或实现关系
要有方法的重写
要有父类引用指向子类对象
3.成员访问特点
可以看前面的博客,点它------------>继承的访问特点
4.好处与弊端
提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
不能使用子类的特有功能/成员
5.多态中的转型
(1)向上转型
父类引用指向子类对象就是向上转型 例如:Animal a = new Cat();
(2)向下转型
格式:子类型 对象名 = (子类型)父类引用; 例如:Cat c = (Cat)a;
6.应用
在接口中和在抽象类中: 因为接口、抽象类不能实例化,因此参照多态的方式来实例化接口、抽象类。
多态的形式:具体类多态,抽象类多态,接口多态。
提示:接口跟抽象类后续会给出具体的解释。