Day06-面向对象编程

面向对象编程(OOP)

面向对象编程的本质:以类的方式组织代码,以对象的形式组织(封装)数据

抽象

三大特性

  • 封装

  • 继承

  • 多态

非静态方法之间可以互相调用不用new对象,但是在静态方法里面无法直接调用非静态方法,原因是静态方法是和类一起加载的,非静态方法是在类实例化之后才存在的,相当于一个已经存在的方法调还没存在的方法

构造器

  1. 没有返回值,必须和类名相同

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

  3. 用来初始化值

  4. 一旦定义了有参构造,想使用无参构造,就必须显示定义一个无参构造

  5. this. 代表当前类的....

类与对象

  1. 类与对象:

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

  2. 方法

    • 定义、调用

  3. 对应的引用

    • 引用类型 : 基本类型(8)

    • 对象是通过引用来操作的,栈-->堆

  4. 属性:字段field 成员变量

    默认初始化

    • 数字:0,0.0

    • char:u0000

    • boolean:false

    • 引用:null

    修饰符 属性类型 属性名=属性值!

  5. 对象的创建和使用

    • 必须使用new 关键字创造对象,构造器 Person wenji=new Person()

    • 对象的属性 wenji.name()

    • 对象的方法 wenji.sleep()

    • 静态的属性 属性

    • 动态的行为 方法

封装

高内聚、低耦合

属性私有:get/set

继承

  1. 子类继承父类,就会拥有父类的全部方法

  2. 变量的修饰符:public、protect、default、private

  3. 在java中所有的类都直接或间接继承object

  4. java中只有单继承,没有多继承

  5. 私有的东西无法被继承

  6. 调用父类的构造器,必须要在子类构造器的第一行

super

  • super调用父类的构造方法,必须在构造方法的第一个

  • super必须只能出现在子类的方法或者构造方法中

  • super和this不能同时调用构造方法

this和super的区别

代表的事物不同

  • this:本身调用者这个对象

  • super:代表父类对象的应用

前提

  • this在没有继承也可以使用

  • super只能在继承条件下才可以使用

构造方法

  • this():本类的构造

  • super():父类的构造

方法重写

重写都是方法的重写,和属性无关

  • 需要有继承关系,子类重写父类的方法

  • 参数列表必须相同

  • 修饰符:范围可以扩大:public>protect>default(默认)>private 比如父类是protected,子类可以是protected,public

  • 抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException--》Exception(大)

重写,子类的方法必须和父类一致,方法体不同

//静态方法
public class A extend B{
 @Override
 public static void test(){
   System.out.println("A->test");
}
}

public class B{
 public static void test(){
System.out.println("B->test");
}
}

public class C{
 public static void main(String[] args){
   A a=new A();
   a.test();
   B b=new A();
}
}

//非静态方法
public class A extend B{
 @Override
 public void test(){
   System.out.println("A->test");
}
}

public class B{
 public void test(){
System.out.println("B->test");
}
}

public class C{
 public static void main(String[] args){
   A a=new A();
   a.test();
   B b=new A();
}
}

静态方法和非静态方法调用区别很大

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

  • 非静态方法:重写,调用的是对象的方法,对象是用子类new出来的,对象的方法

静态方法只能被继承不能被重写

多态

  • 一个类的实际类型是确定的,但是可以指向的引用类型就不确定了,父类的引用指向子类

Student s1=new Student();
Person s2=new Student();
Object s3=new Student();

注意事项

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

  2. 父类和子类,有联系,类型转换异常!ClassCastException

  3. 存在条件:继承关系方法, 需要重写,父类引用指向子类对象

  • static 方法,属于类,它不属于实例

  • final 常量

  • private 方法

  1. 把父类转换为子类,向下转型,强制转换

  2. 方便方法的调用,减少重复的代码,简洁

posted @ 2023-06-02 11:49  仓鼠的气垫床  阅读(52)  评论(0编辑  收藏  举报