面向对象编程

面向对象oop

以类的方式组织代码,以对象的形式封装数据。

类是一个模版:抽象,对象是一个具体的实例

public class demo02 {

    public static void main(String[] args) {
        //静态方法 static
        student.say(); //类名+方法名直接调用

        //非静态方法
        //对象类型  对象名 = 对象值
        student student = new student();
            student.say();
    }
}
//在同一个类当中,只有两个方法都是静态方法,才能在自己本身调用,其他的方法。
//静态方法在类存在的时候就已经加载,而非静态方法是在对象实例化后才会加载

构造器

一个类即使什么都不写。也会存在一个构造方法

  1. 必须和类的名字相同
  2. 必须没有返回类型,也不能写void
  3. 有参构造必须要在new对象的时候添加参数不然会报错,一般在写无参后,也会写一个无参的构造一方
  4. 一般构造器用来初始化值

封装

属性私有:通过private(私有)在属性和方法前进行声明,用户无法直接调用属性与方法。

get/set:提供一些可以操作属性的方法,防止属性无法改变,提供一些public的get set 方法。

继承

一个类继承另一个类的所有属性与方法。子类是父类的扩展

关键词 extends

java中只用单继承

!! 无法直接调用父类的私有属性(private)

public class Studeent extends Person(){
    
} 

super:可以调用父类的方法与属性(public与protect)

当调用父类的构造器时,必须放在子列的第一行

public class Student extends Person(){
	super(); //调用父类的构造器
	
	Student student = new Student();
}

instanceof 用于判断两个类型之间是否有关系(子类,父类,父类的父类)

result = preson instance of Teacher;//返回值为布尔类型

引用类型的转换(类型名)变量名

由高转低要强制转换

多态

  • 多态:父类的引用指向子类的对象

  • 把子类转换为父类,向上转换

  • 把父类转换为子类,向下转换,强制转换

  • 方便方法的调用,减少重复的代码

抽象类

abstract修饰

只有方法的名字没有方法的实现

抽象类的方法必须由继承她的子类来实现

或者说子子类来实现

特点:

  1. 不能new出来,只能靠子类来实现
  2. 抽象类中可以写普通方法,抽象方法必须在抽象类当作

接口

接口可以多继承

接口:只有规范,自己无法写方法~专业的约束!约束和实现分离

  • interface:接口中的所有定义都是抽象的(默认)

  • implements:实现接口的方法要重写接口的所有方法,可以

  • 接口不可以实例化,接口中没有构造方法

内部类

在A类的内部再定义一个B类

posted @ 2021-02-22 11:02  2333gyh  阅读(21)  评论(0编辑  收藏  举报