定义
以类的方式组织代码,以对象的封装数据
类和对象的关系
类是一种抽象的数据类型,它是对某一事物的完整描述
对象是抽象概念的具体实例
构造函数
快捷键:alt+ins=生成构造器
//构造器(默认无参数)
public Student(String name,int age) {
this.name=name;
this.age=age;
}
三大特性
封装
将复杂的功能封装起来,对外开放一个接口,简单调用
继承
- extend
- java中只有单继承,没有多继承
- object类(任何类都继承他)
- super
super的注意点
- super调用父类的构造方法,必须在构造函数第一个
- super和this不能同时调用构造函数
- super必须只能出现在子类的方法或子类的构造函数中
- 在子类任何构造器(不管有几个形参)中super()是隐藏的
super和this比较
super | this | |
---|---|---|
代表的对象 | 父类对象的应用 | 本身调用者这个对象 |
前提 | 需要继承 | 没有继承也可以用 |
ctrl+h可以查看继承关系
方法重写(override)区别于方法重载
- 方法重载:同一个类中的方法参数列表不同
- 方法重写(有继承关系,子类重写父类)
- 方法名必须相同和参数列表必须相同
//父
protected void hello(){
System.out.println("hello 父类!");
return;
}
//子
@Override
public void hello() {
System.out.println("hello 子类");
}
多态
不同的对象调用同样的方法但是做了不同的事情。
-
多态是方法的多态,属性没有多态
-
存在的条件:继承关系,方法需要重写,父类的引用指向子类的对象 ——也可以理解成表现形式
-
类型转换
-
子类转化成父类,向上转型
-
父类转成为子类,向下转型:强制转换
-
//类型转换 由高(父类)到底(子类)需要强转 Person person = new Student(); ((Student) person).go(); //person.go(); error Student student = (Student) new Person(); //student.go(); 没有go方法
-
修饰符
四种访问方式
private | default | protected | public | |
---|---|---|---|---|
同一类 | 1 | 1 | 1 | 1 |
同一包中的类 | 1 | 1 | 1 | |
子类(可以跨包) | 1 | 1 | ||
其他包的类 | 1 |
static
static 只加载一次
匿名构造类可以进行赋一些初值
例子
public class Person {
static {//1
System.out.println("this is 静态代码块");
}
{//2
System.out.println("this is 匿名代码块");
}
public Person() {//3
System.out.println("this is 构造方法");
}
public static void main(String[] args) {
Person person = new Person();
System.out.println("===================");
Person person1 = new Person();
}
}
/*
输出
this is 静态代码块
this is 匿名代码块
this is 构造方法
===================
this is 匿名代码块
this is 构造方法
*/
abstract抽象类
public abstract class Action {
public abstract int add(int a,int b);
public abstract int del(int a,int b);
public abstract int mul(int a,int b);
}
注意:
- 不能new这个抽象类,只能靠子类继承
- 抽象类中可以写普通方法
- 抽象方法必须在抽象类中
接口
接口中所有的定义方法都是抽象的public abstract
接口可以多继承,区别extends
public interface UserService {
void update();
}
public class UserServiceImpl implements UserService {
@Override
public void update() {
}
}
技巧
效果图
具体的操作: