Java面向对象

文章详细介绍了Java中的继承概念,包括单继承机制、优点与缺点,以及子类如何访问父类成员。同时,讨论了访问权限修饰符的作用,如private、default、protected和public。文章还涉及方法的重写规则,强调了重写与重载的区别,并指出不能被重写的方法类型。此外,提到了super关键字的使用场景和this的含义。最后,讨论了final关键字以及Object类在Java中的重要性。
摘要由CSDN通过智能技术生成

继承

继承作用:多个实体类中存在很多重复的(属性,功能),提高代码复用性

继承的使用: 父类|基类|超类 : 子类的共性(属性,共性)

子类|派生类 : 对象的共性

子类 extends 父类

!!注意 : 继承为单继承机制,一个子类只能存在一个直接父类,但是一个父类可以存在多个子类

优点 : 简化结构,使用简单

缺点 : 不灵活,不便于后期维护

子类一旦继承父类,有权使用父类的成员

public class extends001 {
    public static void main(String[] args){
        Cat cat=new Cat();
        cat.run();


    }

}
class Animal{
    private String name;
    private String variety;

    public Animal(String name, String variety) {
        this.name = name;
        this.variety = variety;
    }

    public Animal() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVariety() {
        return variety;
    }

    public void setVariety(String variety) {
        this.variety = variety;
    }
}
class Cat extends Animal{

    private int age;
    public void run(){
        System.out.println("一只"+getVariety()+"的猫在跑");
    }
   /* public Cat(String name, String variety, int age) {
        this.name = name;
        this.variety = variety;
        this.age = age;
    }
    */


    public Cat() {

    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
class Dog001 extends Animal{

    private String color;

    public Dog001() {
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

}
    extends 延续+扩展  

访问权限修饰符

访问权限修饰符:成员修饰符,只修饰成员,不修饰局部

private(私有的) 只能在当前类中访问

default(默认的,没有修饰符时默认为default) 当前类中,同包不同类

protected (被保护的) 当前类中,同包不同类,不同包的子类中(继承)

public  当前类中,同包不同类,不同包的子类中(继承),不同包的其他类中

!!注意 : 能够修饰的类的访问权限修饰符 : public | default

                最常用的访问权限修饰符 : public | private

                面相对象设计原则之一 : 开闭原则 对修改关闭,对扩展开放

方法的重写

方法重写和方法重载的区别:

共同点:都是方法的特性

不同点

重载Overload: 1.一个类中的多个方法 2.方法名相同 3.参数列表不同|方法签名不同

重写Override: 1.两个类中的两个方法 2.继承|实现关系 3.方法签名完全相同

使用重写的前提 :

当子类从父类中继承了功能,功能满意,功能实现不满意的时候,可以在子类中对这个继承的功能重新实现-->重写

调用 : 如果子类中存在重写方法,会调用子类中重写的方法,对父类中被重写的方法进行屏蔽

检测方法是否是重写方法 :

1.在重写方法的行号的后面存在提示显示 O↑

2.强制检测一个方法是否为重写方法 @Override

不能被重写的方法 :

1.private修饰的方法不能被重写 私有方法可以被继承,但是无权访问

2.被final修饰的方法不能被重写

3.静态方法不能被重写

!!如果子类中存在于父类静态方法同名的方法,要求子类中的这个方法也要为静态的

重写的实现要求 : == <= >=

1.==方法签名完全相等

2.<= 返回值类型

基本数据类型|void : 重写方法的返回值类型 == 被重写方法的返回值类型

引用数据类型 : 重写方法的返回值类型<=被重写方法的返回值类型()

3.>= 重写方法的访问权限修饰符>=被重写方法的访问权限修饰符

public class Class001_Override {
    public static void main(String[] args) {
        SiCong siCong = new SiCong();
        siCong.words();
    }
}


class JianLin{
    //名言
    public JianLin words(){
        System.out.println("先定一个小目标,挣它一个亿...");
        return null;
    }
}

class SiCong extends JianLin{
    //重写 : 重新定义words的方法体
    @Override
    public SiCong words(){
        System.out.println("我不在乎我的朋友有钱没钱,反正全都没我有钱...");
        return null;
    }
}

super

super与this之间的区别: 都是关键字,都指代对象

super与this都不能使用在静态方法中

this:指代当前对象(new的对象|调用成员方法的对象)

1、构造器的首行,调用本类中的其他构造器 2、区分同名的变量问题(局部变量与成员变量)

super:指代父类对象

1、子类构造器的首行,通过super(实参)调用父类构造器

如果在子类构造器的首行没有显示调用父类指定构造器,默认调用父类空构造

2、在子类中区分子父类中同名成员问题(成员变量,成员方法)

如果存在子父类中同名成员,默认this.调用子类中的 通过super.调用父类同名成员

如果不存在同名问题,super.可以省略

子父类继承关系下创建子类对象 : 先父类后子类

final

final : 最终的 !!被final修饰的变量为常量 !!被final修饰的方法不能被重写 !!被final修饰的不能被继承(太监类)

object

Object : 类 是java中所有类的父类(老祖宗类)

如果一个类没有显示的继承自其他类,默认继承自Object

在java中所有的类都会继承自Object类,因为不是直接继承,就是间接继承

toString : 返回对象的字符串表现形式

来自于Object类中toString方法的实现 :

当在java中输出一个对象的引用时候,默认输出的是对象调用了toString方法的返回值

结合业务,希望输出一个对象的引用 时候,想要输出的是这个对象的所有属性值,而非地址值

以后在定义实体类的时候,都应该根据所有的属性重写toString方法

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

当在java中输出一个对象的引用时候,默认输出的是对象调用了toString方法的返回值

结合业务,希望输出一个对象的引用 时候,想要输出的是这个对象的所有属性值,而非地址值

以后在定义实体类的时候,都应该根据所有的属性重写toString方法

实体类的定义规范 | Javabean类的定义规范:

1.类是公共的

2.至少提供一个空构造,根据需求提供带参

3.属性私有化,提供一对公共的访问方式

4.根据所有属性值重写toString方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值