类和对象的创建
- 对象:具体的个体,如这辆车子,这个人,这只狗等,概括起来就是万物皆对象;
- 类:对象的抽象,如车子的抽象,所有车子的属性和行为,如小汽车都是4个轮子,能开动等。类是创建对象的模板,由属性和行为两部分组成;
- 类的创建:包括属性和方法,如下
java
package oopDemo.test03;
//class-类的关键字,类名Car,类的创建
public class Car {
public int wheels=4;//类的属性以及赋值
void run(){//类的方法
System.out.println("能开动");
}
}
- 类对象的创建,实例化后调用类方法;
java
package oopDemo.test03;
//class-类的关键字
public class Application {
static void main(String[] args) {
//类对象的创建,类对象car01
Car car01 = new Car();
car01.run();
}
}
构造器
- 构造器名必须和类名一致;
- 构造器没有返回值类型;
- 任何类都含有构造器。如果没有显式地定义类的构造器;
- 则系统会为该类提供一个默认的无参的构造器。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。
- 快捷键:Alt+insert,然后选择构造器,可选择无参或有参构造器;


- 构造器如下:注意下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("我是构造器");
}
}
封装
- 隐藏对象的状态属性,使用private关键字定义声明属性私有,使用get或set方法设置、获取这个属性值;
- 高内聚,低耦合:类的内部数据操作都自己完成,仅暴露少量的方法给外部使用,如银行信息(所有信息以及运行不暴露给我们知道),你仅仅知道你自己的银行信息(只能操作自己的银行卡);
- 作用:①保护数据,提高数据安全性;②隐藏代码实现细节;③统一接口;④增强系统的可维护性;
- 参考代码以及注释:
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("方法也私有了哦");
}
}
继承
- extends关键字,单继承只能有一个父类;
- 父类可以有多个子类,如汽车---》大众汽车;汽车---》奔驰汽车;汽车---》宝马汽车;
- 他们的超级父类是Object
java
package oopDemo.test03;
public class BMWCar extends Car{
public BMWCar(int wheels) {
super(wheels);
}
}
方法的重写--方法可以重写,属性不可
- 子类继承父类时,将父类的方法重写;
- 关键字: @Override
- 快捷键:Alt+insert,然后选择方法重写,然后选择需要重写的方法。具体操作可见构造器;
- 注意事项:①方法名必须和父类相同;②参数列表也要相同;③修饰符可以扩大不可以缩小;④抛出的异常范围可以缩小不可以扩大-----注意和重载的区别
java
package oopDemo.test03;
public class BMWCar extends Car{
public BMWCar(int wheels) {
super(wheels);
}
@Override //父类方法重写
void run() {
super.run();
}
}
多态
- 一种事物的多种形态;
- 存在条件:①有继承关系;②子类重写父类方法;③父类引用指向子类对象;
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();
}
}
抽象
- abstract关键字,包括抽象类和抽象方法,就是类的抽象,具体由子类实现,抽象方法也就抽象类的子类中的方法实现
java
package oopDemo.Test;
//抽象类--关键字abstract
public abstract class AbstractDemo01 {
public abstract void dosomething();//抽象方法:没有方法体
public void test(){ //这个是普通方法,有方法提
System.out.println("----");
}
}
- 抽象类的子类,去实现抽象类
java
package oopDemo.Test;
//抽象类的方法必须重写,去实现他父类的方法
public class A extends AbstractDemo01{
@Override
public void dosomething() {
System.out.println("重写的方法");
}
}
接口
- 接口就是约束就是规范。
- 关键字interface,如接口代码
java
package oopDemo.test03;
//关键字interface
public interface TimerService {
void timer();//没有方法体
}
- 接口实现,关键字implements
java
package oopDemo.test03;
//关键字implements, TimerService--这个是接口,这个UserServiceImpl是接口实现
public class UserServiceImpl implements TimerService{
@Override
public void timer() {//接口需要方法重写
System.out.println("实现接口timer方法");
}
}
- 接口可以多个继承,使用逗号隔开
java
public class UserServiceImpl implements UserService,TimerService{ }