类的继承
extend
example
不同的类对象,dog,cat,或lion都有run方法(会继承所有成员变量和方法),但同时一个子类只能拥有一个基类
class Parent{
private int n_private = 1;
int n_friendly = 2;
protected int n_protected = 3;
public int n_public = 4;
}
class Child extends Parent{
public void f(){
//n_private = 10;//如图1所示,private修饰的成员变量,子类虽然继承但是却无法访问
n_friendly = 20;
n_protected = 200;
n_public = 400;
}
}
访问控制符public
class 的修饰权限只用于public和default
public class TestAcess{
}
class T{
private int i = 0;
int j = 1;
protected int k = 2;
public int l = 3;
public void m() {//同一个类下面可以访问
i = 9;
}
}
class TT {
public void m() {
T t = new T();
//System.out.println(t.i);//同一个包下面,不同类也无法访问
System.out.println(t.j);//default,
System.out.println(t.k);
System.out.println(t.l);
}
}
继承类方法重写
class Person{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String getInfo(){
return "name" + name + "age" + age;
}
}
class Student extends Person{
private String school;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return school;
}
public String getInfo(){//继承基类Person方法getInfo,在子类Student中重写
return "name" + getName() + "age" + getAge() + "school" +getSchool();
}//重写方法和被重写方法具有相同的方法名称——getInfo,参数列表和返回值类型——String
}
public class TestOverWrite{
public void main(String args[]){
Person Jack = new Person();
Student Json = new Student();
Jack.setAge(100);
Json.setSchool("Ide");
System.out.println(Jack.getInfo());
}
}
super关键字
当前对象的父类对象的引用
class FatherClass{
public int value;
public void f(){//父类的方法f()
value = 1100;//父类中定义的变量value =1100
System.out.println("FatherClass.value = " + value);
}
}
class ChildClass extends FatherClass{
public int value;
public void f(){
super.f();//执行父类的方法f()
value =200;//执行完父类方法,跳转至此
System.out.println("ChildClass.value = " + value);//输出子类value
System.out.println(value);
System.out.println(super.value);//输出符父类value
}
}
public class TestInherit{
public static void main(String args[]){
ChildClass cc = new ChildClass();//new一个名为cc的ChildClass
cc.f();//执行ChildClass中定义的方法f(),
}
}