Java三大特征:封裝,繼承和多態成員變數:靜態成員變數(static)和實例成員變 訪問方法:類名.靜態成員變數;對象.實例成員變數;對象.靜態成員變數;(第三個不推薦) 套話:靜態的都可以訪問,實例的只能實例的訪問 繼承中子類不能繼承父類的構造方法,eg:父類:public People(int ...
Java三大特征:封裝,繼承和多態
成員變數:靜態成員變數(static)和實例成員變
訪問方法:類名.靜態成員變數;對象.實例成員變數;對象.靜態成員變數;(第三個不推薦)
套話:靜態的都可以訪問,實例的只能實例的訪問
繼承中子類不能繼承父類的構造方法,eg:父類:public People(int age){this.age=age},子類就不能繼承這個
@Override註釋的用法
子類重寫方法的修飾符要比父類的更大或一樣,EG:父類:protected,子類:public;
子類重寫方法的返回值類型要比父類小或一樣,RG:父類:public object run(){},子類:public Integer run(){};
繼承後的全部(有參和無參)構造器一定會先訪問父類的無參構造器,再執行子類自己的構造器;
子類的構造器第一行都有一個super();調用父類的無參數構造
成員變數和方法學習時候的代碼:
public class class1 {
private String name;
private int age;
private boolean sex;//實例成員變數,屬於類的對象,需要添加對象進行訪問
public static String schoolname="何平安la";//靜態成員變數,屬於類本身,可用類名直接訪問
public class1(){
}
public class1(String name, int age, boolean sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public static void speakname(){
System.out.println("嗚哈哈哈"+schoolname);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public void speak(){
System.out.println("name:"+this.name+",age:"+age+",sex:"+this.sex);
}
public static void main(String[] args) {
class1 zbj =new class1();
zbj.setName("豬八戒");
System.out.println(zbj.schoolname);
class1.speakname();//類名.靜態方法
speakname();//同一個類中訪問靜態方法可以不寫類名
zbj.speak();//對象.實例方法
zbj.speakname();//對象.靜態方法(不推薦)
}
}
繼承學習時候的代碼:
public class c2 {
public static void main(String[] args){
c2 c =new c2();
People p1= new People();
Student s1=new Student();
s1.study();
}
static class People {
public People(){
System.out.println("人");
}
public String name;
public static void swim(){
System.out.println("游泳");
}
public void eat(){
System.out.println("吃飯");
}
public void run(){
System.out.println("跑步");
}
}
static class Student extends People{
public Student(){
// super(); 此處寫不寫都一樣
System.out.println("學生");
}
public void study(){
System.out.println("學習");
eat();//調用子類的eat
super.eat();//調用父類的eat
//super可以在實例方法中調用子類中被重寫的方法
}
@Override//加上註解後可以檢查父類的方法是否寫錯,註釋特點可讀性好,安全,優雅~
public void eat(){
System.out.println("學生吃的多");//方法重寫
}
// @Override
//此處方法名與父類的不一樣,報錯提示
public void run1(){
System.out.println("學生跑步");
}
public int id;
// @Override
public static void swim(){
}//靜態方法不能被重寫,因為靜態方法只能用於自己的類,不能重寫,單獨寫一樣的方法相當於寫了個新的靜態方法,而不是重寫
}
}