Java 第四章 面向对象(下)

类的继承

概念:

类的继承是指在一个现有类的基础上构建一个新的类,构建出来的新类被称作子类,现有类被称作父类。子类会自动继承父类的属性和方法,使得子类具有父类的特征和行为。

用extends关键字。

例:

class 父类{ …… } class 子类 extends 父类{ …… }

例:

//定义Animal类
class Animal {
    public final String COLOR = "金色"; //定义COLOR属性
    private String name;    //声明name属性
    private int age;        //声明age属性

    public String getName() {        //定义name属性的getter方法
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

//定义Dog类继承Animal类
class Dog extends Animal {
    //此处不写代码
}

//定义测试类
public class Summary01 {
    public static void main(String[] args) {
        Dog dog = new Dog();  //创建一个Dog类的对象
        dog.setName("金毛");
        dog.setAge(2);
        System.out.println("名称:" + dog.getName() + ",年龄:" + dog.getAge() + ",颜色:" + dog.COLOR);
    }
}

注意:

1、在Java中,类只支持单继承,不允许多继承。也就是说一个类只能有一个直接父类。
2、多个类可以继承一个父类。
3、在Java中,多层继承也是可以的,即一个类的父类可以再继承另外的父类。例如,C类继承自B类,而B类又可以继承自类A,这时,C类也可称作A类的子类。
4、在Java中,子类和父类是一种相对概念,一个类可以是某个类的父类,也可以是另一个类的子类。

方法的重写

继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。

super关键字

1、使用super关键字访问或调用父类的非私属性或非私有方法

2、使用super关键字调用父类中指定的构造方法

注意:通过super()调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。

final关键字

如果父类的成员不希望被子类重写,可以在声明父类的成员时使用final关键字修饰。可以使用final关键字修饰类、属性、方法。
注意:

1、使用final关键字修饰的类不能有子类。
2、使用final关键字修饰的方法不能被子类重写。
3、使用final关键字修饰的变量是常量,常量不可修改。

final关键字修饰类

Java中使用final关键字修饰的类不可以被继承,也就是不能派生子类。

final关键字修饰方法

当一个类的方法被final关键字修饰后,该类的子类将不能重写该方法。

final关键字修饰变量

Java中被final修饰的变量为常量,常量只能在声明时被赋值一次,在后面的程序中,常量的值不能被改变。如果再次对final修饰的常量赋值,则程序会在编译时报错。

抽象类和结构

抽象类:

定义一个类时,常常需要定义一些成员方法用于描述类的行为特征,但有时这些方法的实现方式是无法确定的。所以Java提供了抽象方法来满足。抽象方法是使用abstract关键字修饰的成员方法,抽象方法在定义时不需要实现方法体。

注意:

1、包含抽象方法的类必须是抽象类。
2、声明抽象类和抽象方法时都要使用abstract关键字修饰。
3、抽象方法只需声明而不需要实现。
4、如果非抽象类继承了抽象类,那么该类必须实现抽象类中的全部抽象方法。

接口

接口是一种用来定义程序的协议,它用于描述类或结构的一组相关行为。

使用interface关键字声明

接口是不允许继承抽象类的,但是允许接口继承接口,并且一个接口可以同时继承多个接口。

多态

概述:

多态是指不同类的对象在调用同一个方法时表现出的多种不同行为。

在同一个方法中,这种由于参数类型不同而导致执行效果不同的现象就是多态。

多态主要有以下两种形式。
1、方法的重载。
2、对象的多态(方法的重写)。

instanceof关键字

使用instanceof关键字判断一个对象是否是某个类(或接口)的实例

Object类

一个Object类,它是所有类的父类,每个类都直接或间接继承了Object类,因此Object类通常被称为超类。当定义一个类时,如果没有使用extends关键字为这个类显式地指定父类,那么该类会默认继承Object类。

内部类

成员内部类:

在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类。成员内部类可以访问外部类的所有成员,无论外部类的成员是何种访问权限。如果想通过外部类访问内部类,则需要通过外部类创建内部类对象。

局部内部类:

局部内部类,也称为方法内部类,是指定义在某个局部范围中的类,它和局部变量都是在方法中定义的,有效范围只限于方法内部。
在局部内部类中,局部内部类可以访问外部类的所有成员变量和成员方法,而在外部类中无法直接访问局部内部类中的变量和方法。如果要在外部类中访问局部内部类的成员,只能在局部内部类的所属方法中创建局部内部类的对象,通过对象访问局部内部类的变量和方法。

静态内部类:

使用static关键字修饰的成员内部类。与成员内部类相比,在形式上,静态内部类只是在内部类前增加了static关键字,但在功能上,静态内部类只能访问外部类的静态成员,通过外部类访问静态内部类成员时,因为程序已经提前在静态常量区分配好了内存,所以即使静态内部类没有加载,依然可以通过外部类直接创建一个静态内部类对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值