只有禿頭才能變強java
package Demo1;
//使用繼承後,貓和狗都屬於動物類,都要吃和叫
//因此創建一個動物類
class Animals{
public void eat() {
System.out.println("吃");
}
public void barking() {
System.out.println("叫");
}
}
//貓和狗都繼承動物類
class Cat extends Animals{}
class Dog extends Animals{}
public class ExtendsDemo {
public static void main(String[] args) {
//建立一隻小狗,並調用eat和barking方法
Dog dog=new Dog();
dog.eat();
dog.barking();
//建立一隻小貓,並調用eat和barking方法
Cat cat=new Cat();
cat.eat();
cat.barking();
}
}
複製代碼
運行結果app
吃
叫
吃
叫ide
//Java只支持單繼承,不支持多繼承
class Father{}
class Mother{}
//正確的寫法
class Son extends Father{}
//錯誤的寫法
class Son extends Father and Mother{}
複製代碼
package Demo1;
//Java支持多重繼承
class GrandFather {
public void say() {
System.out.println("我是你爺爺");
}
}
class Father extends GrandFather {
public void show() {
System.out.println("我是你爸爸");
}
}
class Son extends Father {
}
public class ExtendsDemo {
public static void main(String[] args) {
// 建立一個兒子對象
Son son = new Son();
// 調用父親的方法
son.show();
// 調用爺爺的方法
son.say();
}
}
複製代碼
運行結果:this
我是你爸爸
我是你爺爺spa
package Demo1;
class Father {
private int num = 10;
public int num1 = 20;
// 私有方法,子類不能繼承
private void show() {
// num能夠在父類中訪問
System.out.println(num);
System.out.println(num1);
}
public void say() {
System.out.println(num);
System.out.println(num1);
}
}
class Son extends Father {
public void funtion() {
// 子類不能繼承父類的私有成員
// System.out.println(num);
System.out.println(num1);
}
}
public class ExtendsDemo {
public static void main(String[] args) {
// 建立對象
Son son = new Son();
// s.show(),子類不能繼承父類的私有成員方法
son.say();
son.funtion();
}
}
複製代碼
輸出結果
10
20
20設計
繼承中成員變量的關係,當子類中成員變量與父類中的成員變量名稱同樣時,在子類方法中訪問一個變量的查找順序:code
package Demo1;
class Father {
public Father() {
System.out.println("Father的無參構造");
}
public Father(String name) {
System.out.println("Father的有參構造");
}
}
class Son extends Father {
public Son() {
//super(),子類的每一個構造方法第一條語句默認super()
System.out.println("son的無參構造");
}
public Son(String name) {
//super()
System.out.println("son的有參構造");
}
}
public class ExtendsDemo {
public static void main(String[] args) {
// 建立對象
Son son = new Son();
System.out.println("***************");
Son son2=new Son("tom");
}
}
複製代碼
輸出結果
Father的無參構造
son的無參構造orm
Father的無參構造
son的有參構造視頻
從運行結果能夠看出,每次建立一個子類對象都會訪問父類的無參構造方法,當父類中沒有無參構造方法時,項目會報錯,解決方法:對象
package Demo1;
class Father {
/*
* public Father() { System.out.println("Father的無參構造"); }
*/
public Father(String name) {
System.out.println("Father的有參構造");
}
}
class Son extends Father {
public Son() {
super("John");
System.out.println("son的無參構造");
// super("John");
}
public Son(String name) {
// super("Jimmy");
this();
System.out.println("son的有參構造");
}
}
public class ExtendsDemo {
public static void main(String[] args) {
// 建立對象
Son son = new Son();
System.out.println("***************");
Son son2 = new Son("tom");
}
}
複製代碼
輸出結果
Father的有參構造
son的無參構造
Father的有參構造
son的無參構造
son的有參構造
package Demo1;
class Laptop extends Pc{
public void Read(String name) {
super.Read(name);
System.out.println("我能夠看視頻");
}
}
class Pc{
public void Read(String name) {
System.out.println("我能夠看小說");
}
}
public class ExtendsDemo1 {
public static void main(String[] args) {
//建立對象
Laptop lt=new Laptop();
lt.Read("哈利波特");
}
}
複製代碼
輸出結果:
我能夠看小說
我能夠看視頻
渾渾噩噩一天又過去了