一.构造方法;
格式: 以类名为方法名的,没有返回值结构(void都不要)
public 类名(){ }
1: 构造方法是在创建对象时调用 new 类名(); new 类的构造方法名();
2: 构造方法多用于初始化一个对象: 比如给对象的属性赋值 调用需要提前执行的方法
3: 构造方法是每个类都默认自带的一个方法 但是这个构造方法没有参数 以及方法内容
4: 可以自己在类中创建构造方法(包括带参数以及不带参数的)
方法重载: 在类中可以存在多个同名的方法,格式:参数不一致
如下图:定义了两个个获取名字的方法。如果两个名字相同肯定是不可以的,系统会报错。
但是如果给其中一个方法添加不同的参数,两种方法虽然名字相同但可以同时存在。
public int getName() {
return name;
}
public int getName(int a){
return name;
}
5.静态方法:
只会被调用一次,在程序运行中只会运行一次,但是不同创建对象,在主函数里就可以直接运行。跟类名绑定,用类名可以直接调用。
二、继承
1.格式: public class 子类名 extends 父类名{ }
子类可以继承父类的什么? (回答这个问题的前提是: 得知道一个类中具备哪些不同的代码)
主要是对象成员属性和方法,但是构造部分内容联代调用,静态资源共享
一个类中可以定义什么:
与对象相关的:
成员属性: 继承
成员方法: 继承
构造方法: 没继承 但是子类创建对象在调用自己的构造方法之前会将父类的构造方法调用
构造代码块: 向上联代调用:子类创建对象时 父类的构造代码块都会执行
与类有关的,与对象无关
静态属性: 继承 但是是与父类共用同一个
静态方法: 子类名也可以直接调用
静态代码块: 只在类第一次加载时执行 且只执行一次
// 一个类中可以定义什么
public class Student {
// - 与对象相关的:
// - 成员属性: 对象调用才可以使用
String name;
// - 成员方法: 对象名调用
public void setName(String name) {
this.name = name;
}
// - 构造方法: 创建对象时执行
public Student() {
System.out.println("Hello 我是构造方法");
}
// - 构造代码块: 创建对象时执行
{
System.out.println("Hello 我是构造代码块");
}
// - 与类有关的,与对象无关
// - 静态属性: 与类绑定,在内存中只会创建一份 类名可以直接调用
static int count;
// - 静态方法:
public static void staticMethod() {
System.out.println("Hello 我是静态方法,可以被类名调用");
}
// - 静态代码块
static {
System.out.println("Hello 我是静态代码块 一个程序运行过程中只执行一次");
}
}
改造父类方法的 必须有继承 语法: 子类中可以重写父类的方法 ,前提要求所有内容必须一致 除方法体{ }之外 子类中重写了父类的方法,那么就不会调用继承的方法,而是调用子类自己重写的方法 子类继承父类的方法,但是父类的某个方法不满足子类的需求 ,子类可以通过重写方法 改造继承来的方法 从而变成一个子类特有的方法 ,只是逻辑特有名字还是一样的
子类重写方法之后还是需要调用父类的方法时,可以使用 super关键字调用
super 关键字,在子类中指代父类 可以调用父类的属性 方法以及构造方法
属性以及方法的调用格式: super.属性 super.方法名();
调用构造方法的格式: super(); 必须放在子类的构造方法中第一行
如图所示,狗这一类继承了动物类,并重写了动物类的方法。但用了super再次调用了父类的方法
所以输出栏有两个结果。