0
点赞
收藏
分享

微信扫一扫

面向对象学习笔记

芒果六斤半 2022-04-14 阅读 85
java

1.面向对象编程的本质就是:以类的方式组织代码,以对象的形式封装数据。

2.抽象

3.三大特性:封装,继承,多态

4.静态方法:类名+方法名

//部分代码
public class Student {
    public static void say(){
        System.out.println("学生说话了");
}

}

public static void main(String[] args) {
    Student.say();
}

5.非静态方法

(1)首先要实例化这个类

//对象类型 对象名字 = 对象值
  Student student = new Student();

(2)使用方法

student.say();

6.static是和类一起加载的,而类实例化实在时候才存在。

7.student对象就是一个Student类的具体实例

8.构造器:初始化对象的值

(1)和类名相同,无返回值

(2)使用new关键字,本质就是在调用构造器

(3)一旦定义了有参构造,无参构造就必须显示定义

public Person(){
    
}
public Person(String name){
    this.name = name;
}

(3)alt+insert快捷键生成构造

9.封装(数据的隐藏)

(1)“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。

(2)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

(3)属性私有,get/set(alt+insert)

(4)作用:

提高程序的安全性;隐藏代码的实现细节;同一接口;增加系统的可维护性。

10.继承(extends)

(1)继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等。

(2)object类

(3)super:调用父类的构造方法,必须要在子类构造器的第一个;必须只能出现在子类的方法或者构造方法中;super和this不能同时调用构造方法。

11.方法重写:前提:需要有继承关系,子类重写了父类的方法

特点:(1)方法名必须相同

           (2)参数列表必须相同

(3)方法体不同

(4)修饰符范围可以扩大:父类的private->public

(5)抛出的异常范围可以被缩小,但是不能扩大

(1)静态方法:方法的调用只和左边,定义的数据类型有关

(2)非静态方法:子类重写了父类的方法;重写的关键词是public

为什么需要重写?

(1)父类的功能子类不一定需要,或者不一定满足

Alt+insert:override

12.多态:即同一方法可以根据发送对象的不同而采用多种不用的行为方式。

一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)

(1)多态是方法的多态,属性没有多态

(2)父类引用指向子类对象 。   father f1 = new Son();

(3)对象能执行哪些方法,主要看对象左边的类型,和右边关系不大

(4)父类型可以指向子类,但是不能调用子类独有的方法

(5)如果方法是static、final、private,就不能重写

13.instanceof和类型转换

instanceof:判断两个类之间的关系

(1)前提:父类引用指向子类的对象

(2)把子类强行转换为父类,可能丢失自己本来的一些方法

(3)父类转换为子类,需要强制转换

Person obj = new Student();
Student student = (Student) obj;
studeng.go();

(4)方便方法的调用,减少重复的代码,使代码变简洁

14.static

只执行一次,顺序:静态代码块、匿名代码块、构造方法

15.抽象类:abstract

(1)抽象方法,只有方法名字,没有方法的实现

public abstract class Action{
    public abstract void doSomeThing();
}

(2)单继承。(接口可以多继承)

(3)不能new抽象类,只能拿子类去实现它,约束!

(4)抽象类里可以有普通方法,有抽象方法的一定是抽象类

抽象类存在构造器吗?:抽象类可以有构造方法,但是不能直接创建抽象类的实例对象

抽象类存在的意义是什么?:被子类继承;提高开发效率。

16.接口:自己无法写方法,只有规范。专业的约束;约束和实现分离;面向接口编程

(1)interface

//interface 定义的关键字,接口都需要实现类
public interface UserService {
    //接口中的所有定义的方法其实都是抽象的
    void add(String name);
    void delete(String name);
    void update(String name);
    void quary(String name);
}



public interface TimeService {
    void timer();
}


//类 可以实现接口 implements 接口
//实现了接口的类  需要重写接口中的方法
//利用接口实现多继承
public class UserServiceImpl  implements  UserService,TimeService{
    @Override
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void quary(String name) {

    }

    @Override
    public void timer() {

    }
}

(2)作用:

<1>约束

<2>定义一些方法,让不同的人实现

<3>方法都是public abstract

<4>常量都是public static final

<5>接口不能被实例化,接口中没有构造方法

<6>implements可以实现多个接口

<7>必须重写接口中的方法

17.内部类:在一个类的内部再定义一个类

(1)成员内部类

(2)静态内部类

(3)局部内部类

(4)匿名内部类

学习笔记,学习视频来自【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili

举报

相关推荐

0 条评论