1、构造函数
定义:用于构造对象对象的一种行为
格式:public 类名(){}
public class Doy {
public Doy(){
System.out.println("创建一个构造函数");
}
}
什么时候执行:创建当前类的对象的时候,自动执行
注意:1.除了接口类之外所有类都会有构造方法
2.构造方法有返回值,返回的是对象在内存中的地址
计算机存储数据的容器:硬盘(文件数据-持久化的数据)、内存(运行中的程序数据)
Java垃圾清理机制:如果发现堆空间的对象地址没有变量引用,则有垃圾清理机制自动回收
1、方法重载
定义:同一个类中,多个方法的方法名相同,参数列表不同(类型、顺序、个数)的方法互为重载方法
分类:普通方法重载和构造方法重载
普通方法重载:
public class Doy {
public void play(){
}
public void play(int a){
}
public void play(int a,String b){
}
}
构造方法重载:
public class Doy {
public void Doy(){
}
public void Doy(int a){
}
public void Doy(int a,String b){
}
}
构造方法重载作用:可以初始化当前对象的一些属性
注意:一旦你重载了构造方法后,则默认的那个没有参数的构造方法就消失了
如果还需要用无参的构造方法,则需要显性定义出来
2、继承
定义:子类继承父类的属性和方法(构造方法不能继承)
格式:public class 子类类名 extends 父类类名{}
例:
public class Animal {
public void cat(){
System.out.println("正在吃");
}
}
public class Doy extends Animal{
public void Doy(){
}
}
public class Test {
public static void main(String[] args) {
Doy doy=new Doy();
doy.cat();
}
}
结果:
注意:任何一个类都是Object类的子类
继承只能是单继承,不能是多继承,但是可以多层继承
3、方法重写和多态
方法重写格式:子类重写父类的方法,方法名、参数列表、返回类型必须都要一样的
自动转型格式:子类对象自动转型为父类的类型
父类类型 对象名= new 子类类型();
public class Animal {
public void cat(){
System.out.println("Animal方法");
}
}
public class Doy extends Animal{
//方法重写
public void cat(){
System.out.println("Doy的方法");
}
}
public class Test {
public static void main(String[] args) {
Animal doy=new Doy();
Animal doy2=new Animal();
doy.cat();
doy2.cat();
}
}
注意:自动转型后的对象,如果子类重写了父类的方法,则执行的是重写后的
多态:多个同一个类型的对象,执行同一个方法,过程不一样就是多态性
继承->方法重写和自动转型—>多态性
4、方法分类
构造方法:public 类名(){}
普通方法:public 返回类型 方法名(){}
抽象方法:public abstract 返回类型 方法名();
普通类:public class 类名{}
1. 方法只能有普通方法和构造方法,一定不能有抽象方法
2. 可以构造对象
抽象类:public abstract class 类名{}
1. 三种方法都可以存在
2. 不能创建对象
接口:public interface 类名{}
1.只能有抽象方法(可以省略掉中间的abstract修饰词)
2.不能创建对象
//普通类
public class Doy{
//构造方法:public 类名(){}
public Doy(){}
//普通方法:public 返回类型 方法名(){}
public void play(){}
}
//抽象类
public abstract class Doy{
//构造方法:public 类名(){}
public Doy(){}
//普通方法:public 返回类型 方法名(){}
public void play(){}
//抽象方法:public abstract 返回类型 方法名();
public abstract void eat();
}
//接口
public interface Doy{
//抽象方法:public abstract 返回类型 方法名();
public abstract void eat();
}
6、接口抽象类和继承
抽象类和接口作用:用于当父类,被继承,约束普通类的成员定义
继承接口:public class 子类类名 implements 接口名{}
public interface People {
public abstract void play();
public abstract void teach();
}
public abstract class Student {
public Student(){}
public void play(){}
public abstract void teach();
}
public class Teacher implements People{ public Teacher(){} public void play(){} public void teach(){} }
注意:接口可以多继承