A)继承
1.Java的继承语法格式
Java继承的关键字是:extends
格式:
public class 子类名 extends 父类名 {
}
注意:Java中类的继承是单继承。
2.子类继成了父类的属性和方法的情况
如下代码说明:
父类中 :
packge stu;
public class Student {
//定义两个属性
public String name;
private int score;
/**
* 构造方法
*/
public Student(){
this("王五",5)
/**
* 构造方法 给属性赋值初始值
*/
public Student(String name,int score){
//赋值
this.name = name;
this.score = score;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setScore(int score){
this.score = score;
}
public int getScore(){
return score;
}
/**
* 定义学习方法
*/
public void study(){
score++;
System.out.println(name+"学习中,学分是"+score);
}
}
子类中:
/**
* 定义一个UNStudent类,该类继承自Student
*/
public class UNStudent extends Student {
public void test(){
System.out.println("UNStudent Test");
}
}
如上代码,可知子类继承父类后,子类和子类的对象能直接调用的属性和方法分为两种情况:
a.子类和父类在同一包下:
1).私有的属性(如属性score),方法以及构造方法是不能被子类的对象(子类对象)直接调用的。
2).默认的,受保护的(name)和公有的属性以及方法(如study)方法都可以被子类的对象以及子类直接调用。
b.子类和父类在不同的包下:
1) 在子类的{}中,只有公有的,受保护的属性和方法能在子类中直接调用。
2) 子类对象调用方法时,那么只有公有的属性和方法能被子类对象调用。
B)方法的重写:
如下代码说明:
package stu;
/**
* 定义大学生类
* @param args
*/
public class Student {
/**
* 所有学生都有学习方法
*/
private String name;
public void study(){
System.out.println("学生名字是"+name);
}
//设定学生名字
public void setName(String name){
this.name=name;
}
public String getname(){
return name;
}
}
调用:
package stue;
public static void main(String[] args){
UNStudent uns=new UNStudent();
//调用从父类继承来的方法
uns.seName("我是大学生");
uns.study();
}
1.new 关键字后面的构造方法时谁的,就调用谁的方法。
2.会优先调用子类类中的方法,如果子类中没有这些方法,则会调用父类中的属性和方法。
注意:当实现继承后,在子类中也可以实现方法重载。