Java面向对象

2023-12-25 17:54:05

目录

一、类和对象

类的介绍

类和对象的关系

类的组成

创建对象和使用对象的格式

二、成员变量和局部变量

三、this关键字

四、构造方法

构造方法概述

构造器:

格式:

执行时机:

构造方法注意事项

五、面向对象三大特性之封装

标准JavaBean

六、static关键字

static 修饰成员的特点

应用场景

注意事项

七、面向对象三大特性之继承

继承介绍

继承的格式

什么时候使用继承?

继承中的成员访问特点 - 成员变量

继承中的成员访问特点 - 成员方法

权限修饰符

Java 中继承的特点

继承中的成员访问特点 – 构造方法

this和super

八、final关键字

九、抽象类

抽象类介绍

注意事项

十、接口

接口介绍

接口中的成员特点

类和接口之间的各种关系

?抽象类和接口的对比

十一、面向对象三大特性之多态

多态的前提

多态的成员访问特点

多态的好处和弊端


一、类和对象

类的介绍

Java 中想要创建对象,必须先要有类的存在
类指的是一组相关属性和行为的集合,我们将其理解为是一张对象的设计图

类和对象的关系

Java 中需要根据类,创建对象
一个类,可以创建出多个对象

类的组成

创建对象和使用对象的格式

二、成员变量和局部变量

三、this关键字

1. 当局部变量和成员变量重名的时候 ,? Java 使用的是 ?

? 就近原则

2. this 关键字的作用是 ?

? 调用本类成员

? this.本类成员变量? :?如果不涉及变量重复, this.可以省略

? this.本类成员方法(); : 没有前提条件? this.可以直接省略

3. 什么是 this 关键字呢 ?

? 代表当前类对象的引用 (地址)

四、构造方法

构造方法概述

构造器:

初始化一个新建的对象

构建、创造对象的时候,所调用的方法

格式:

1. 方法名与类名相同,大小写也要一致
2. 没有返回值类型,连 void 都没有
3. 没有具体的返回值(不能由 return 带回结果数据)

执行时机:

1. 创建对象的时候调用,每创建一次对象,就会执行一次构造方法
2. 不能手动调用构造方法

构造方法注意事项

构造方法的创建
如果没有定义构造方法,系统将给出一个 默认 无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
构造方法的重载
构造方法也是方法,允许重载关系出现
推荐的使用方式
无参数构造方法,和带参数构造方法,都自己手动给出

五、面向对象三大特性之封装

? 使用类设计对象时

? 将需要处理的数据

? 以及处理这些数据的方法, 设计到对象中

优点:

更好的维护数据
使用者无需关心内部实现 , 只要知道如何使用即可

标准JavaBean

1、这个类中的成员变量都要私有,并且要对外提供相应的getXxx setXxx方法

2、类中提供无参, 带参构造方法

public class Student {
    private String name;
    private int age;


    public Student() { //无参构造
    }

    public Student(String name, int age) { //带参构造
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

}

六、static关键字

static 修饰成员的特点

被其修饰的成员, 被该类的所有对象所共享,例如:

多了一种调用方式, 可以通过类名调用(推荐通过类名调用)?,例如:

随着类的加载而加载, 优先于对象存在(在创建对象之前就能访问),例如:

应用场景

static用于工具类的例子:

注意事项

static 方法中,? 只能访问静态成员 (静态只能访问静态)

static 中不允许使用 this 关键字(因为对象贝被new出来之后才会有this,而static先于对象存在)

七、面向对象三大特性之继承

继承介绍

继承:让 类与类之间产生关系 (子父类关系), 子类 可以 直接使用父类 非私有的成员

继承的格式

格式: public class 子类名 extends 父类名 { }
范例: public class Zi extends Fu { }
Fu :是父类,也被称为基类、超类
Zi :是子类,也被称为派生类

什么时候使用继承?

继承中的成员访问特点 - 成员变量

继承中的成员访问特点 - 成员方法

在继承体系中,子类可以继承到父类的方法
有时子类并不想原封不动地继承父类的方法,而是想作一定的修改
这就需要采用方法的重写,方法重写又称方法覆盖

注意事项:?

父类中私有方法不能被重写
子类重写父类方法时,访问权限必须大于等于父类

权限修饰符

Java 中继承的特点

Java只支持单继承,不支持多继承(一个子类只能继承一个父类),但支持多层继承(类2可继承类3,类1可继承类2,嵌套关系)

继承中的成员访问特点 构造方法

在所有的构造方法中,都默认隐藏了一句话 super();
通过这句代码,来访问父类的空参构造方法

this和super

八、final关键字

九、抽象类

抽象类介绍

抽象类是一种特殊的父类,内部可以编写抽象方法

注意事项

十、接口

接口介绍

接口中的成员特点

类和接口之间的各种关系

一个子类只可继承一个父类,但一个类可以实现多个接口

?抽象类和接口的对比

十一、面向对象三大特性之多态

多态的前提

有继承 / 实现关系
有方法重写
有父类引用指向子类对象,或接口引用指向实现类对象

? ? ? ? 1. 对象多态
? ? ? ? ? ? ? ? ? ? Animal a1 = new Dog();
? ? ? ? ? ? ? ? ? ? Animal a2 = new Cat();

? ? ? ? ? ? ? ? ? ? 好处: 方法的形参定义为父类类型, 这个方法就可以接收到该父类的任意子类对象了

? ? ? ? 2. 行为多态
? ? ? ? ? ? ? ? ? ? 好处: 同一个方法, 具有多种不同表现形式, 或形态的能力

package com.itheima.polymorphism;

public class PolymorphismTest1 {
    public static void main(String[] args) {
        useAnimal(new Dog());
        useAnimal(new Cat());

    }

    public static void useAnimal(Animal a) {        // Animal a = new Dog(); =>有父类引用指向子类对象
          a.eat();                                  // Animal a = new Cat();
    }

}

abstract class Animal {
    public abstract void eat();
}

//有继承 / 实现关系
class Dog extends Animal {

//有方法重写
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
}

class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

多态的成员访问特点

? ? ? ? ? ? ? 1. 成员变量 : 编译看左边(父类), 运行看左边(父类)

? ? ? ? ? ? ? 2. 成员方法 : 编译看左边(父类), 运行看右边(子类)

package com.itheima.polymorphism;

public class PolymorphismTest2 {
    public static void main(String[] args) {
        Fu f = new Zi();
        System.out.println(f.num);
        f.show();
        f.print();          // Fu.print();

        System.out.println("-----------------");

        Inter i = new InterImpl();
        i.method();
    }

}

interface Inter {
    void method();
}

class InterImpl implements Inter {

    @Override
    public void method() {
        System.out.println("method...");
    }
}

class Fu {
    int num = 10;

    public void show() {
        System.out.println("Fu...show");
    }

    public static void print(){
        System.out.println("Fu...print");
    }
}

class Zi extends Fu {
    int num = 20;

    @Override
    public void show() {
        System.out.println("Zi...show");
    }

    public static void print(){
        System.out.println("Zi...print");
    }
}

多态的好处和弊端

多态的好处 :提高了程序的扩展性

对象多态 : 将方法的形参定义为父类类型, 这个方法可以接收该父类的任意子类对象

行为多态 : 同一个行为, 具有多个不同表现形式或形态的能力

多态的弊端:不能使用子类的特有成员(因为编译看左边,若调用子类特有成员,编译会报错)

如果非要调用子类的特有成员,则需要用到多态转型

十二、内部类与Lambda表达式

内部类的介绍

内部类就是定义在一个类里面的类

?

内部类成员访问

但如果内部类中的成员与外部类中的成员重名,那就有不同的访问方式,接下来看一道经典的面试题

内部类——面试题

内部类的分类

成员内部类、静态内部类、局部内部类(鸡肋语法,了解即可)、匿名内部类(最重要)

?

静态内部类

局部内部类(鸡肋语法,了解即可)

匿名内部类(最重要)

未完待续

文章来源:https://blog.csdn.net/lbcbjtlhmjq/article/details/135195106
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。