一、继承:
总结:子类可以覆盖父类的方法。
子类可以继承父类除private以为的所有的成员。
构造方法不能被继承。
单继承性:Java 允许一个类仅能继承一个其它类,即一个类只能有一个父类,这个限制被称做单继承性。
继承可以在同一个包中进行,也可以不在同一个包中进行,通过它的访问修饰符来控制,但是子类的访问控制符必须和父类相同.
注意:构造方法不能被继承,掌握这一点很重要。 一个类能得到构造方法,只有两个办法:编写构造方法,或者根本没有构造方法,类有一个默认的构造方法。
二、super
1、super用在子类中,通过点号(.)来获取父类的成员变量和方法。super 也可以用在子类的子类中,Java 能自动向上层类追溯。
2、通过 super 调用父类的隐藏变量,必须要在父类中声明 getter 方法,因为声明为 private(私有的,只能够在本类中被调用) 的数据成员对子类是不可见的。
3、注意:在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。
不能在构造方法以外的任何方法内调用构造方法。
在一个构造方法内只能调用一个构造方法。
无论是 super() 还是 this(),都必须放在构造方法的第一行。
4、如果编写一个构造方法,既没有调用 super() 也没有调用 this(),编译器会自动插入一个调用到父类构造方法中,而且不带参数。
5、通过 super 调用父类的隐藏变量,必须要在父类中声明 getter 方法,因为声明为 private 的数据成员对子类是不可见的。
以游戏账号的倒卖(同一个包中为例):
package wanmei;
public class Tuoxie { //父类
private String name; //游戏账号倒卖后,名字肯定不恩能够重复,所以是私有的.
int rank; //等级
char sex; //性别
int age; //存在的年龄
String faction; //帮派
String friend; //认识的朋友
public Tuoxie(){ //不传参的构造方法。
name="穿着拖鞋去上学"; //给成员变量进行相应的实例化。
rank=105;
sex='男';
age=6;
faction="★战☆魂★";
friend="很多";
System.out.println("game name :"+name+"\t"+"现在的等级 :"+rank //输出角色的基本信息
+"\t"+"sex :"+sex+"\t"+"玩了 :"+age+"年"+"\t"
+"所在的帮派 :"+faction+"\t"+"认识的朋友 :"+friend);
}
public Tuoxie(String name,int rank){ //传参的构造方法。
this.name=name; //通过子类传入变量的信息。
this.rank=rank; //3个参数看着这太多,所以在里面直接赋值一个算了,只传了两个进来。
sex='男';
System.out.println("游戏名字 :"+this.name+"\t"+"当前等级 :"
+this.rank+"\t"+"职业的性别 :"+sex);
}
public String getName() { //要想取得私有信息的参数,就建一个方法,(get+name(私有变量名))
return name; //然后调用这个方法,就可以获得私有变量的信息
}
}
package wanmei;
public class Man extends Tuoxie{ //子类,想要继承父类的格式:extend+Tuoxie(类名,你想要继承的类);
String name; //买了过后赋予新的名字
String change; //改变了哪些(精炼等级),牛人自己点.
// char sex; //继承了性别,如果用道具改变了性别,就不用注视掉。PS:不会卖人妖吧....
String faction; //新加入的帮派;()
String hobby; //个人爱好(下本、调戏新人);
// int rank; //继承了等级(游戏数据的死东西,不可能掉级).
void jianjie(){ //输出新角色的简介(jianjie),PS:英文翻译太长,还是咱中文简介.
System.out.println("game name :"+name+"\t"+"等级是 :"+rank+"\t"
+"改变了 :"+change+"\t"+"sex :"+sex+"\t"
+"玩了 :"+age+"年"+"\t"+"新的帮会 :"+faction+"\t"
+"hobby :"+hobby);
}
public Man(){ /**{利用super在构造方法里面调用构造方法,如果没有写super即默认为无传参super(),一次只能调用一个构造方法}*/
//super("穿着拖鞋去上学",105); //调用传参的构造方法
super(); //调用不传参的构造方法
name ="喝多我也上树"; //对参数进行实例化.
change="精炼等级,苦逼2两年自学而成";
faction="が一将功成万枯骨┩";
hobby="下本、调戏新人";
jianjie(); //构造方法可以调用本类的其他的一般方法, 注意:放在实例化后,应该先实例化,再执行此输出方法,否则等于0.
}
public static void main(String main[]){ //主方法,程序的入口。
Man man=new Man();
}
}