super
super总述
super能出现在实例方法和构造方法中。 super的语法是:“super.”、“super()”。 super不能使用在静态方法中。 super.大部分情况下是可以省略的。 super.什么时候不能省略呢?
在父和子中有同名的属性,或者说有同名的方法,如果此时想在子类中访问父类的数据,不能省略。 super()只能出现在构造方法第一行,通过当前构造方法去调用“父类”中的构造方法,目的是:创建子类对象的时候,先初始化父类型特征。 super的使用方法:
super.属性 【访问父类的属性】 super.方法名(实参)【访问父类的方法】 super(实参) 【调用父类的构造方法】
第一部分
public class SuperTest01
{
public static void main ( String [ ] args) {
new B ( ) ;
}
}
class A extends Object
{
public A ( ) {
System . out. println ( "A类的无参数构造方法!" ) ;
}
public A ( int i) {
System . out. println ( "A类的有参数构造方法(int)!" ) ;
}
}
class B extends A
{
public B ( ) {
this ( "zhangsan" ) ;
System . out. println ( "B类的无参数构造方法!" ) ;
}
public B ( String name) {
super ( ) ;
System . out. println ( "B类的有参数构造方法(String)!" ) ;
}
}
第二部分
public class SuperTest02
{
public static void main ( String [ ] args) {
new C ( ) ;
}
}
class A
{
public A ( ) {
System . out. println ( "A的无参数构造执行" ) ;
}
}
class B extends A
{
public B ( ) {
System . out. println ( "B的无参数构造执行" ) ;
}
public B ( String name) {
System . out. println ( "B的有参数构造执行(String)" ) ;
}
}
class C extends B
{
public C ( ) {
this ( "zhangsan" ) ;
System . out. println ( "C的无参数构造执行" ) ;
}
public C ( String name) {
this ( name, 20 ) ;
System . out. println ( "C的有参数构造执行(String)" ) ;
}
public C ( String name, int age) {
super ( name) ;
System . out. println ( "C的有参数构造执行(String,int)" ) ;
}
}
第三部分
public class SuperTest03
{
public static void main ( String [ ] args) {
CreditAccount ca1 = new CreditAccount ( ) ;
System . out. println ( ca1. getActno ( ) + "," + ca1. getBalance ( ) + "," + ca1. getCredit ( ) ) ;
CreditAccount ca2 = new CreditAccount ( "1111" , 9999.0 , 10.0 ) ;
System . out. println ( ca2. getActno ( ) + "," + ca2. getBalance ( ) + "," + ca2. getCredit ( ) ) ;
}
}
class Account {
private String actno;
private double balance;
public Account ( ) {
}
public Account ( String actno, double balance) {
this . actno = actno;
this . balance = balance;
}
public String getActno ( ) {
return actno;
}
public void setActno ( String actno) {
this . actno = actno;
}
public double getBalance ( ) {
return balance;
}
public void setBalance ( double balance) {
this . balance = balance;
}
}
class CreditAccount extends Account {
private double credit;
public CreditAccount ( ) {
}
public CreditAccount ( String actno, double balance, double credit) {
super ( actno, balance) ;
this . credit = credit;
}
public double getCredit ( ) {
return credit;
}
public void setCredit ( double credit) {
this . credit = credit;
}
}
第四部分
public class SuperTest04
{
public static void main ( String [ ] args) {
Vip v = new Vip ( "zhangsan" ) ;
v. shopping ( ) ;
}
}
class Customer
{
String name;
public Customer ( ) {
}
public Customer ( String name) {
this . name = name;
}
}
class Vip extends Customer
{
public Vip ( ) { }
public Vip ( String name) {
super ( name) ;
}
public void shopping ( ) {
System . out. println ( this . name + "正在购物!" ) ;
System . out. println ( super . name + "正在购物!" ) ;
System . out. println ( name + "正在购物!" ) ;
}
}
第五部分
public class SuperTest05
{
public static void main ( String [ ] args) {
Vip v = new Vip ( "zhangsan" ) ;
v. shopping ( ) ;
}
}
class Customer
{
String name;
public Customer ( ) {
}
public Customer ( String name) {
this . name = name;
}
public void doSome ( ) {
System . out. println ( this . name + "do some!" ) ;
System . out. println ( name + "do some!" ) ;
}
}
class Vip extends Customer
{
String name;
public Vip ( ) { }
public Vip ( String name) {
super ( name) ;
}
public void shopping ( ) {
System . out. println ( this . name + "正在购物!" ) ;
System . out. println ( super . name + "正在购物!" ) ;
System . out. println ( name + "正在购物!" ) ;
}
}
第六部分
public class SuperTest06
{
public void doSome ( ) {
System . out. println ( this ) ;
}
public static void main ( String [ ] args) {
SuperTest06 st = new SuperTest06 ( ) ;
st. doSome ( ) ;
}
}
第七部分
public class SuperTest07
{
public static void main ( String [ ] args) {
Cat c = new Cat ( ) ;
c. yiDong ( ) ;
}
}
class Animal
{
public void move ( ) {
System . out. println ( "Animal move!" ) ;
}
}
class Cat extends Animal
{
public void move ( ) {
System . out. println ( "Cat move!" ) ;
}
public void yiDong ( ) {
this . move ( ) ;
move ( ) ;
super . move ( ) ;
}
}