Java基础--面向对象的三大特征

本文详细介绍了Java中封装、继承和多态的相关知识。封装通过方法、内部类和属性私有化提高代码复用性和数据合法性;继承使子类拥有父类特征和行为,Java支持多重继承;多态分为编译时和运行时多态,能提高代码维护性和扩展性,但父类不能使用子类特有功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.封装

体现方式:
方法、内部类、属性的私有化 — 将属性用private修饰,然后提供对外的get和set方法来获取或者设置属性,如果不想被外界访问,可不比提供方法给外界访问。

优势:提高代码的复用性。保证数据的合法性

public class Student{
    private float score;
    public void setScore(float score){
        this.score = score;
    }
    public float getScore(){
        return score;
    }
}

二.继承

1.定义:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或类从父类继承方法,使得子类具有父类相同的行为。
2.继承类型: 需要注意的是 Java 不支持多继承,但支持多重继承。单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
3.继承的特性
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

//公共父类: Animal
public class Animal { 
    private String name;  
    private int id; 
    public Animal(String myName, int myid) { 
        name = myName; 
        id = myid;
    } 
    public void eat(){ 
        System.out.println(name+"正在吃"); 
    }
    public void sleep(){
        System.out.println(name+"正在睡");
    }
    public void introduction() { 
        System.out.println("大家好!我是" + id + "号" + name ); 
    } 
}
//子类:Dog
public class Dog extends Animal { 
    public Penguin(String myName, int myid) { 
        super(myName, myid); 
    } 
}
//子类:Cat
public class Cat extends Animal { 
    public Mouse(String myName, int myid) { 
        super(myName, myid); 
    } 
}

三.多态

1.定义:同一个对象在不同时刻体现出来的不同状态。
2.分类:
(1) 编译时多态:方法的重载
(2) 运行时多态:向上造型(用父类来声明,用子类来创建)、方法的重写(两等两小一大)

3.多态的前提:
A:有继承或者实现关系。
B:有方法重写。
C:有父类或者父接口引用指向子类对象。
4.多态中的成员访问特点
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边

5.多态的好处:
A:提高代码的维护性(继承体现)
B:提高代码的扩展性(多态体现)
6.多态的弊端:
父不能使用子的特有功能,即子可以当作父使用,父不能当作子使用。

方法的重载
 1.方法名一样,但参数不一样,这就是重载(overload)。
 2.要求:函数名要一致。
形参列表不一致(形参的个数或形参 的类型不一致)
与返回值类型无关

方法的重写
1.子父类出了同名的函数,这个我们就称作为方法的重写。
2.要求:
(1)方法名与形参列表必须一致。
(2)子类的权限修饰符必须要大于或等于父类的权限修饰符。
(3)子类的返回值类型必须要小于或 等于父类的返回值类型。
(4) 子类的异常类型必须要小于或 等于父类的返异常类型。
3.使用原因:当父类的功能无法满足子类的需求时。
4.重写的前提: 必须要存在继承的关系

向上造型
父类类型的引用可以调用父类中定义的所有属性和方法,不能调用子类的.
创建父类对象时,调用的方法为父类方法;
创建子类对象时,调用的方法是子类重写的方法或继承自父类的方法;

//父类:动物类
public class Animal{
    public int age;
    public String name;
    public void eat(){
        System.out.println("动物具有吃东西的本领!");
    }
}
//子类:狗类
public class Dog extends Animal {
    public void eat(){
        System.out.println("狗是吃肉的。");
    }
}
//测试类
public class Test{
    public static void main(String[] args) {
   Animal ani1 = new Animal();   //父类的引用可以指向本类的对象
    Animal ani2 = new Dog(); //父类的引用可以指向子类的对象
    ani1.eat();  //输出动物具有吃的本领    
    ani2.eat(); //输出狗是吃肉的
    } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值