Extends继承相关
public class Animal {
public static void main(String[] args) {
Dog dog=new Dog("Tom"); //DOg已经有了有参构造方法,在用无参,则会出错
dog.shout();
}
public Animal() {
System.out.println("这是所有动物的初始化");
}
public void shout() {
System.out.println("所有动物的叫声");
}
}
class Dog extends Animal{
public String name;
public Dog(String name) { //子类继承,不管是有参还是无参,都会默认super()
//此处有个默认的super();
this.name=name; //子类的构造,在super(),的基础上增强
}
public void shout() {
System.out.println("汪汪汪"+name); //子类方法,直接重写
}
}
抽象类和接口implement
abstract class Animal{ //定义抽象类
abstract int shout(); //抽象方法,没有方法体
}
//方法是抽象的,类也是抽象的
//类是抽象的,方法不一定是抽象的
interface Animal{ 定义接口
int ID=1; //定义全局常量
void breath(); //抽象方法
}
构造方法和初始化方法
初始化: {
//用来初始化对象属性,先于构造方法执行。可以用来初始化无参构造方法的属性
}
构造方法: new类 (): 实例化类的对象,
后于初始化执行,由初始化方法初始的值会被,可能会被有参构造覆盖
public class Student {
private String name;
public Student() {
System.out.println("无参构造方法"+name+age+flag);
}
public Student(String name){
this.name=name;
this.name="20";
System.out.println("实例化方法"+name); //输出 形参(name)的值
System.out.println("实例化方法"+this.name); //输出当对象 this.name 的值
}
{
System.out.println("初始化"); //比构造方法先执行,用于初始化
//没有初始化方法,则 默认 int :0
String : null
boolean : false
}
static {
System.out.println("静态方法"); //只执行一次
}
public static void main(String[] args) {
Student student=new Student("hanke");
Student student2=new Student();
}
}