16_this的使用方法
1.在构造函数中用this调用其它的构造函数时,对this的调用必须是该构造函数中的第一条语句。
public class Person {
String name;
int age;
String address;
Person() {
System.out.println("无参数的构造函数");
}
Person(String name,int age) {
this();
this.name=name;
this.age=age;
System.out.println("两个参数的构造函数");
}
Person(String name,int age,String address) {
this(name,age);
this.address=address;
System.out.println("三个参数的构造");
}
}
public class Test_this {
public static void main(String[] args) {
Person p1 = new Person("小明",20,"哈尔滨");
}
}
17_static关键字的作用
1.小结
A.静态成员变量只有一份
B.在静态函数中只能使用静态变量
C.静态代码块的主要作用是为静态成员变量赋值
public class Person {
static String name;
static{
System.out.println("这里是静态代码块");
}
static void talk() {
System.out.println("my name is:" + name);
}
}
public class Test_this {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
Person.name = "xiaoming";
System.out.println("p1's name:" + p1.name);
System.out.println("p2's name:" + p2.name);
p1.name = "xiaohua";
System.out.println("p1's name:" + p1.name);
System.out.println("p2's name:" + p2.name);
}
}
18、19、20小结:
1.继承:Java只支持单继承,不允许多继承(即:一个子类只能继承一个父类,但一个父类可以有多个子类)。
只能继承成员变量和成员函数,不能继承构造函数。
2.构造函数:
在子类的构造函数中,必须调用父类的构造函数。
super()的用法(用在子类调用父类的构造函数时)和this()相同(三点)
3.复写(Override):
A.在具有父子关系的两个类中
B.父类和子类各有一个函数,这两个函数的定义(返回值类型、函数名和参数列表)完全相同
public class Person {
int age;
String name;
Person(){
System.out.println("Person的构造函数");
}
Person(String name,int age) {
this.name = name;
this.age = age;
}
void introduce(){
System.out.println("我的年龄是:" + age + ",名字是:" + name);
}
}
public class Student extends Person {
String grade;
Student() {
//super(); 在子类的构造函数中,必须调用父类的构造函数(不写的话,系统会自动调用)
System.out.println("Student的构造函数");
}
Student(String name, int age, String grade) {
super(name,age);
this.grade = grade;
}
void introduce() {
System.out.println("\n我的年级是:" + grade);
super.introduce();
}
}
public class Test_this {
public static void main(String[] args) {
Person p1 = new Person("xiaohua",19);
Student s1 = new Student("xiaoming",18,"大三");
p1.introduce();
s1.introduce();
}
}