第七章总结

继承(extends),多态,抽象类与接口

一,继承

1,Java语言每个类只能继承一个父类

2,父类 和普通类写法相同

public class 父类类名{

}

3,子类

public  class  子类类型 extends  父类类名{

}

例题7.1:

 例题7.2:

public class telephone {//电话类
	String button = "button:0~9";//成员属性,10个按键
	void call() {//拨打电话功能
		System.out.println("开始拨打电话");
	}
}
public class mobile extends telephone {//手机类继承电话类
	String screen = "screen:液晶屏";//成员属性,液晶屏幕
	
}
public class demo2 {
 
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		mobile motto = new mobile();
		System.out.println(motto.button);//子类调用父类属性
		System.out.print(motto.screen);//子类调用父类没有的属性
		motto.call();//子类调用父类方法
	}
 
}

4,所有类的构造方法第一行都有一个隐藏的" super();"

作用是在执行该构造方法之前调用其父类的构造方法。

二,ob ject 类
1,getClass()的方法:是Object类定义的方法,它会返回对象执行时的Class实例

getClass().getname();

2,toString()方法:将一个对象返回为字符串形式,它会返回一个String实例。

3,方法的重写:

返回参数相同  方法名相同  传入参数相同  方法体

例题7.3:

 4,equals方法:有两种比较对象的方式,分别为“==”运算符与equals()方法。

例题7.4代码与结果:

public class people {
	int id;//身份证号
	String name;//名字
	
	public people(int id,String name) {
		this.id = id;
		this.name = name;
		
	}
	public boolean equals(Object obj) {//重写object类的equals()方法
		if(this==obj)//如果参数与本类是同一个对象
			return true;
		if(obj==null)//如果参数是null
			return false;
		if(getClass()!=obj.getClass())//如果参数与本类类型不同
			return false;
		people other = (people)obj;//将参数强转成本类对象
		if(id!=other.id)//如果两者的身份证号不相等
			return false;
		return true;
	}
		
	public String toString() {//重写object类的toString()方法
		return name;//只输出名字
	}
	public static void main(String[]age) {
		people p1 = new people(220,"tom");
		people p2 = new people(220,"汤姆");
		people p3 = new people(330,"张三");
		Object o = new Object();
		
		System.out.println(p1+"与"+p2+"是否为同一个人?");
		System.out.println("equals()方法的结果:"+p1.equals(p2));
		System.out.println("==运算符的结果:"+(p1==p2));
		
		System.out.println();
		System.out.println(p1+"与"+p3+"是否为同一个人?");
		System.out.println(p1.equals(p3));
		
		System.out.println(p1+"与"+o+"是否为同一个人?");
		System.out.println(p1.equals(o));
	}
}

三,对象类型的转换

1,向上转型:子类对象赋值给父类引用 (自动转换)

animal a = new dog();

2,向下转型:父类对象赋值给子类引用(需要进行强制转换)

dog a = (dog) new animal();

例题7.6:

 五,方法的重载

重写:(子类—父类) 参数相同  方法名相同  传入参数相同  只有方法体不同

重载:方法名相同,参数不同

例题7.8:

public static int add(int a,int b) {//定义一个方法
		return a+b;
	}
	public static double add(double a,double b) {//与第一个方法名相同,参数类型不同
		return a+b;
	}
	public static int add(int a) {//与第一个方法参数个数不同
	return a;
	}
	public static int add(int a,double b) {//先int参数,后double参数
		return a;//输出int参数值
	}
	public static int add(double a,int b) {//先double参数,后int参数
		return b;//输出int参数值
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		System.out.println("调用add(int,int)方法:"+add(1,2));
		System.out.println("调用add(double,double)方法:"+add(2.1,3.3));
		System.out.println("调用add(int)方法:"+add(1));
		System.out.println("调用add(int,double)方法:"+add(5,8.0));
		System.out.println("调用add(double,int)方法:"+add(5.0,8));
	}
 
}

 例题7.9:

 

六,final关键字

1,final修饰变量----不可以被修改(常量)

例题7.10

public class FinalData {
	static final double PI=3.1415926;
 
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		System.out.println("圆周率的值为:"+PI);
		System.out.println("半径为3的圆的周长:"+(2*3*PI));
		PI=3.1415927;
	}
 
}

2,final修饰方法-----不可以被重写

例题7.11

public class Dad {
	public final void turnOnTheTV() {
		System.out.println("爸爸打开了电视");
	}
}
class Baby extends Dad{
	public final void turnOnTheTV() {
		System.out.print("宝宝也要打开电视");
	}
}

3,final修饰类-----不可以被继承

七,使用instanceof关键字判断对象类型

语法格式:

myobject instanceof ExampleClass
myobject:某类的对象引用
ExampleClass:某个类

1,对象名  instanceof  类名

判断对象是否属于该类或子类

例题7.7

class Quadrangle{}//创建一个四边形类
class Square extends Quadrangle{}//正方形继承四边形
class Circilar{}//创建圆形类
 
public class Demo5 {
 
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Quadrangle q = new Quadrangle();//四边形对象
		Square s = new Square();//正方形对象
		System.out.println(q instanceof Square);//判断四边形是否为正方形的子类
		System.out.println(s instanceof Quadrangle);//判断正方形是否为四边形的子类
		System.out.println(q instanceof Circular);//判断正方形是否为圆形的子类
	}
 
}

八,多态

public void draw(Square){//绘制正方形的方法
}
public void draw(Circlar c){//绘制圆形的方法
}

例题7.12

class Shape{}//图形类
class S extends Shape{}//正方形类继承图形类
class Circular extends Shape{}//圆形类继承图形类
 
public class Demo6 {
	public static void draw(Shape s) {//绘制方法
		if(s instanceof S) {//如果是正方形
			System.out.println("绘制正方形");
		}else if (s instanceof Circular) {//如果是圆形
			System.out.println("绘制圆形");
		}else {//如果是其他类型
			System.out.println("绘制父类图形");
		}
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		draw(new Shape());
		draw(new S());
		draw(new Circular());
 
	}
 
}

九,抽象类与接口

一,抽象类

1,抽象方法

修饰符  abstract  返回参数  方法名(传入参数);

2,抽象类 :有抽象方法的类一定是抽象类

修饰符  abstarct  class 类名{

}

如果代码中有抽象方法:1,把普通方法改成抽象方法  2,把抽象方法改成普通方法

 使用场景:由于继承中,父类制定规则,子类继承(如继承普通方法一定要重写)

二,接口

1,所有方法都是抽象方法

修饰符  interface 接口名{

}

2,Java语言每个类可以实现多个接口

3,实现:implements

修饰符  class  类名  implements  接口1,接口2,....,{

}

4,如果代码中有三个抽象代码,但只实现两个,解决方法为:

a,重写那个没有实现的抽象代码

b,把类改成抽象类 

例题7.13
 

interface Paint{//可绘制接口
 public void draw();//绘制抽象方法
}
class Qu{//四边形类
 public void doAnytihing() {
  System.out.println("四边形提供的方法");
 }
}
//平行四边形类,继承四边形类,并实现可绘制接口
class Par extends Qu implements Paint{
 public void draw() {
  //由于该类
  System.out.println("绘制平行四边形");
 }
}
//正方形类,继承四边形类,并实现可绘制接口
class Sq extends Qu implements Paint{
 public void draw() {
  System.out.println("绘制正方形");
 }
}
//圆形类,仅实现可绘制接口
class Cir implements Paint{
 public void draw() {
  System.out.println("绘制圆形");
 }
}
public class Pa {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Sq s=new Sq();
  s.draw();
  s.doAnytihing();
  Par p=new Par();
  p.draw();
  p.doAnytihing();
  Cir c = new Cir();
  c.draw();
 }
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值