java面向对象OPP-三大特性

类和对象的创建

  1. 对象:具体的个体,如这辆车子,这个人,这只狗等,概括起来就是万物皆对象;
  2. 类:对象的抽象,如车子的抽象,所有车子的属性和行为,如小汽车都是4个轮子,能开动等。类是创建对象的模板,由属性和行为两部分组成;
  3. 类的创建:包括属性和方法,如下
java 复制代码
package oopDemo.test03;
//class-类的关键字,类名Car,类的创建
public class Car {
   public  int wheels=4;//类的属性以及赋值
   void run(){//类的方法
       System.out.println("能开动");
   }
}
  1. 类对象的创建,实例化后调用类方法;
java 复制代码
package oopDemo.test03;
//class-类的关键字
public class Application {
    static void main(String[] args) {
        //类对象的创建,类对象car01
        Car car01 = new Car();
        car01.run();
    }
}

构造器

  1. 构造器名必须和类名一致;
  2. 构造器没有返回值类型;
  3. 任何类都含有构造器。如果没有显式地定义类的构造器;
  4. 则系统会为该类提供一个默认的无参的构造器。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。
  5. 快捷键:Alt+insert,然后选择构造器,可选择无参或有参构造器;

  6. 构造器如下:注意下this关键字
java 复制代码
package oopDemo.test03;

public class Car {
   public  int wheels=4;//类的属性
   void run(){//类的方法
       System.out.println("能开动");
   }

    public Car(int wheels) {
        this.wheels = wheels;//this关键字,指向当前对象;super关键字,指向父级对象
        System.out.println("我是构造器");
    }
}

封装

  1. 隐藏对象的状态属性,使用private关键字定义声明属性私有,使用get或set方法设置、获取这个属性值;
  2. 高内聚,低耦合:类的内部数据操作都自己完成,仅暴露少量的方法给外部使用,如银行信息(所有信息以及运行不暴露给我们知道),你仅仅知道你自己的银行信息(只能操作自己的银行卡);
  3. 作用:①保护数据,提高数据安全性;②隐藏代码实现细节;③统一接口;④增强系统的可维护性;
  4. 参考代码以及注释:
java 复制代码
package oopDemo.test03;

public class Car {
   public  int wheels=4;//类的属性
    private String  CarlicenseCode;//设置成私有属性,达到封装
   void run(){//类的方法
       System.out.println("能开动");
   }
    public void SetCarlicenseCode(){//为私有属性设置get方法
       this.CarlicenseCode=CarlicenseCode;
    }
    public String getCarlicenseCode(){//为私有属性设置set方法
       return CarlicenseCode;
    }
    public Car(int wheels) {
        this.wheels = wheels;//this关键字,指向当前对象;super关键字,指向父级对象
        System.out.println("我是构造器");
    }
    private void test(){//方法也可私有,也是封装
        System.out.println("方法也私有了哦");
    }
}

继承

  1. extends关键字,单继承只能有一个父类;
  2. 父类可以有多个子类,如汽车---》大众汽车;汽车---》奔驰汽车;汽车---》宝马汽车;
  3. 他们的超级父类是Object
java 复制代码
package oopDemo.test03;

public class BMWCar extends Car{
    public BMWCar(int wheels) {
        super(wheels);
    }
}

方法的重写--方法可以重写,属性不可

  1. 子类继承父类时,将父类的方法重写;
  2. 关键字: @Override
  3. 快捷键:Alt+insert,然后选择方法重写,然后选择需要重写的方法。具体操作可见构造器;
  4. 注意事项:①方法名必须和父类相同;②参数列表也要相同;③修饰符可以扩大不可以缩小;④抛出的异常范围可以缩小不可以扩大-----注意和重载的区别
java 复制代码
package oopDemo.test03;

public class BMWCar extends Car{

    public BMWCar(int wheels) {
        super(wheels);
    }

    @Override //父类方法重写
    void run() {
        super.run();
    }
}

多态

  1. 一种事物的多种形态;
  2. 存在条件:①有继承关系;②子类重写父类方法;③父类引用指向子类对象;
java 复制代码
package oopDemo.test03;

public class Application {
    static void main(String[] args) {
        //car01和car02都是具体对象,一个左侧是Car类实例化,一个是BMWCar,这就是多态
        Car car01 = new BMWCar(4);
        BMWCar car02 = new BMWCar(4);
        car01.run();
    }
}

抽象

  1. abstract关键字,包括抽象类和抽象方法,就是类的抽象,具体由子类实现,抽象方法也就抽象类的子类中的方法实现
java 复制代码
package oopDemo.Test;
//抽象类--关键字abstract
public abstract class AbstractDemo01 {
    public  abstract void dosomething();//抽象方法:没有方法体
    public void test(){  //这个是普通方法,有方法提
        System.out.println("----");
    }
}
  1. 抽象类的子类,去实现抽象类
java 复制代码
package oopDemo.Test;
//抽象类的方法必须重写,去实现他父类的方法
public class A extends AbstractDemo01{
    @Override
    public void dosomething() {
        System.out.println("重写的方法");
    }
}

接口

  1. 接口就是约束就是规范。
  2. 关键字interface,如接口代码
java 复制代码
package oopDemo.test03;
//关键字interface
public interface TimerService {
    void timer();//没有方法体
}
  1. 接口实现,关键字implements
java 复制代码
package oopDemo.test03;
//关键字implements, TimerService--这个是接口,这个UserServiceImpl是接口实现
public class UserServiceImpl implements TimerService{
    @Override
    public void timer() {//接口需要方法重写
        System.out.println("实现接口timer方法");
    }
}
  1. 接口可以多个继承,使用逗号隔开
java 复制代码
public class UserServiceImpl implements UserService,TimerService{ }
相关推荐
七夜zippoe1 天前
Python多进程编程实战:彻底突破GIL限制的完整指南
python·编程·多进程·process·gil
蕨蕨学AI1 天前
【Wolfram语言】37 布局与显示
开发语言·wolfram
No芒柠Exception1 天前
Spring Boot 实现分片上传、断点续传与进度条
java·后端
Amelia1111111 天前
day43
python
k***92161 天前
如何在C++的STL中巧妙运用std::find实现高效查找
java·数据结构·c++
m0_502724951 天前
在Qt中激活已运行的应用程序实例
开发语言·qt
君爱学习1 天前
Spring AI简介
java
沐知全栈开发1 天前
Kotlin 对象表达式/声明
开发语言
EnzoRay1 天前
注解
java