this ; static ; 继承
this关键字:
class Person{
String name ;
int age ;
String address ;
Person(){
}
Person(String name , int age){
this.name = name;
this.age = age;
System.out.println("两个变量的构造函数");
}
Person(String name , int age , String address){
this(name , age); //this后面直接加括号,就是调用本类中的其他构造函数(必须处于第一个语句)
this.address = address;
System.out.println("三个变量的构造函数");
}
void talk(){
String name = "Unknown";
System.out.println("My name is "+ this.name ); //这里如果不加this的话,会和函数内部的局部变量冲突
}//this用于使用成员变量
}
// 1. ->this.成员变量
// 2. ->this() 调用本类中的其他构造函数--必须处于第一个语句
对比: 与this相似的关键字 supper 关键字, 用法一样,只不过是调用父类中的构造函数和成员变量和方法
-----------------------------------
static :
//静态static
class Person2{
static int i; //静态变量属于类这个层次,而不是对象这个层次
Person2(){
System.out.println("-----"+i+"-----");
}
static void talk(){
System.out.println("静态函数不能调用非静态变量,静态变量i为--"+i);
}
static{
System.out.println("静态代码块");
}
}
// 1.static变量--使用方法: 类.静态变量 ->类层次的变量,
// 2.static函数-- 使用方法: 类.静态函数 || 静态函数不能调用非静态变量
// 2.static代码块-- 使用方法: static{代码}; || 静态代码块在装载类的时候执行
class Test2{
public static void main(String args []){
Person2 p1 = new Person2();
Person2 p2 = new Person2();
Person2.i = 10; //static 变量可以直接用 类名.变量名 调用
System.out.println("p1="+p1.i+", p2="+p2.i);
p1.i = 20; //每个人都有改static变量的权利
System.out.println("p1="+p1.i+", p2="+p2.i);
Person2.i = 10; //对于static型,可以直接用类名进行调用
Person2.talk();
}
}
---------------------------------------
继承:
extends关键字--继承父类的所有,并能有所添加
class Person3{
String name ;
int age;
void eat(){
System.out.println("i want to eat");
}
void introduce(){
System.out.println("My name is "+this.name+" , i'm "+ this.age);
}
}
class Student extends Person3{ //由extends进行继承
int grade;
void study(){
System.out.println("i like study");
}
}
//继承,对消除重复代码,和后期对类的修改很有好处
//这样来说,集合,和树形图就在设计类之前就非常重要了