ch8 继承

ch8 继承

1. 继承的语法


class Father //父类
{
	public String name;
	public int age;
	public String eye;
	public String height;
	public String cuis;   //肤色
	
	public Father()   //Father类的构造器——无参构造器
	{
		System.out.println("父类无参构造器");
	}
	
	public Father(String name,int age)
	{
		this.name = name;
		this.age = age;
		System.out.println("父类有参构造器");
	}
	
	public String toString()
	{
		String tmp=name+" "+age;
		return tmp;
	}
	
}

public class Son extends Father  //子类
{
	public String spec_frame;   //子类定义的特有的成员变量
	
	public Son()   //Father类的构造器——无参构造器
	{
		System.out.println("子类无参构造器");
	}
	
	public Son(String spec_frame)   //Father类的构造器——无参构造器
	{
		this.spec_frame=spec_frame;
		System.out.println("子类有参构造器");
	}
	
	public void getMes()
	{
		System.out.println(spec_frame);
	}
	
	public static void main(String args[])
	{
		Father f=new Father("father",40);
		System.out.println(f);
		
		System.out.println("**********************");
		
		Son s=new Son("blue");
		s.name="son";
		s.age=10;
		
		System.out.println(s);
		
		s.getMes();
	}
	
}


运行结果:

父类有参构造器
father 40
**********************
父类无参构造器
子类有参构造器
son 10
blue

2. 修饰符

2.1: public:声明成员变量为公共类型

//package a;

class door
{
	String color;
	
	public door()
	{
		this.color="门的颜色为黄色";
		System.out.println("父类构造器");
	}
	
	void opendoor()
	{
		System.out.println("此方法为没有修饰符,为default类型!");
	}
}

public class wood_door extends door
{
	private String wood_color;
	public wood_door()
	{
		this.wood_color="本类的成员变量wood_color被修饰为default";
		System.out.println("子类构造器");
	}
	
	
	public static void main(String[] args)
	{
		wood_door wd=new wood_door();
		
		wd.opendoor();
		System.out.println(wd.color);
		System.out.println(wd.wood_color);
	}
}


运行结果:

父类构造器
子类构造器
此方法为没有修饰符,为default类型!
门的颜色为黄色    //默认类型
本类的成员变量wood_color被修饰为default

3. 成员变量的覆盖

class fruit
{
	static String color="黄色";
	String size="大";
	static String getFruitColor()
	{
		return color;
	}
	String getFruitsize()
	{
		return size;
	}	
}
public class apple extends fruit
{
	static String applecolor="绿色";
	String applesize="小";
	
	static String getFruitColor()
	{
		return applecolor;
	}
	String getFruitsize()
	{
		return applesize;
	}	
	
	public static void main(String[] args)
	{
		fruit f=new apple();
		System.out.println(f.getFruitColor());
		System.out.println(f.getFruitsize());
	}
}

运行结果:

黄色
小
  • 对象引用f在编译期类型为fruit,当在运行期为apple。apple是fruit的子类,apple的方法getFruitsize被继承。
  • apple的方法 getFruitColor的修饰符为static类型,表示这个getFruitColor方法为类的方法,在apple继承fruit的时候是没有被覆盖, 在编译时期为fruit的类型。

10. 反射机制

//引入反射机制必备的refelect包
import java.lang.reflect.*;

public class racing_cycle 
{
	public static void main(String[] args)
	{
		try
		{
			//在运行期的时候动态加载Java.util.Date下面的类
			Class c = Class.forName("java.util.Date"); 
			//把类里的各个方法写入到数组m里
			Method m[] = c.getDeclaredMethods(); 
			//通过循环把数组里的方法名称显示出来
			for (int i = 0; i < m.length; i++)
			{
				//把名称打印出来.
				System.out.println(m[i].toString()); 
			}
		} 
		catch (Throwable e)
		{
			System.err.println(e); 
		}
	}
}

运行结果:

public boolean java.util.Date.equals(java.lang.Object)
public java.lang.String java.util.Date.toString()
public int java.util.Date.hashCode()
public java.lang.Object java.util.Date.clone()
public int java.util.Date.compareTo(java.lang.Object)
public int java.util.Date.compareTo(java.util.Date)
public static java.util.Date java.util.Date.from(java.time.Instant)
private void java.util.Date.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundException
private void java.util.Date.writeObject(java.io.ObjectOutputStream) throws java.io.IOException
private final sun.util.calendar.BaseCalendar$Date java.util.Date.normalize()
private final sun.util.calendar.BaseCalendar$Date java.util.Date.normalize(sun.util.calendar.BaseCalendar$Date)
public static long java.util.Date.parse(java.lang.String)
public boolean java.util.Date.before(java.util.Date)
public boolean java.util.Date.after(java.util.Date)
public static long java.util.Date.UTC(int,int,int,int,int,int)
public int java.util.Date.getYear()
public void java.util.Date.setYear(int)
public int java.util.Date.getMonth()
public void java.util.Date.setMonth(int)
public void java.util.Date.setDate(int)
public int java.util.Date.getDay()
public int java.util.Date.getHours()
public void java.util.Date.setHours(int)
public int java.util.Date.getMinutes()
public void java.util.Date.setMinutes(int)
public int java.util.Date.getSeconds()
public void java.util.Date.setSeconds(int)
public long java.util.Date.getTime()
private final long java.util.Date.getTimeImpl()
public void java.util.Date.setTime(long)
static final long java.util.Date.getMillisOf(java.util.Date)
private static final java.lang.StringBuilder java.util.Date.convertToAbbr(java.lang.StringBuilder,java.lang.String)
public java.lang.String java.util.Date.toLocaleString()
public java.lang.String java.util.Date.toGMTString()
public int java.util.Date.getTimezoneOffset()
private final sun.util.calendar.BaseCalendar$Date java.util.Date.getCalendarDate()
private static final sun.util.calendar.BaseCalendar java.util.Date.getCalendarSystem(int)
private static final sun.util.calendar.BaseCalendar java.util.Date.getCalendarSystem(long)
private static final sun.util.calendar.BaseCalendar java.util.Date.getCalendarSystem(sun.util.calendar.BaseCalendar$Date)
private static final synchronized sun.util.calendar.BaseCalendar java.util.Date.getJulianCalendar()
public java.time.Instant java.util.Date.toInstant()
public int java.util.Date.getDate()

11.泛型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值