您的位置:首页 > 编程语言 > Java开发

Java学习笔记之继承和接口(二) 继承和多态、接口

2016-05-04 20:04 501 查看
以下是博主学java的时候记的一些笔记,分享给大家,如果有错误或者以为的话,可以在下方留言

继承和多态

使用多态的核心是使用上转型对象,即将Abstract 类声明对象作为其子对象的上转型对象,那么这个上转型对象就可以调用子类重写的方法。

个人理解:其实上转型对象就是一个父类对象,通过子类引用,转换为上转型对象,它可以调用子类重写的方法和继承的方法,也可以调用子类隐藏的变量和继承的变量,使程序更加的简洁。

例:

<span style="font-size:18px;"><span style="color:#000000;">package com.CCAr;

abstract class Animal{

public abstract void cry();

public abstract String AnimalsName();

}

class Simple{

public void playGround(Animal animal){

System.out.println(animal.AnimalsName()+"的声音是:");

animal.cry();

}

}

class Dog extends Animal{

public void cry(){

System.out.println("汪汪!");

}

public String AnimalsName(){

return "狗";

}

}

class Cat extends Animal{

public void cry(){

System.out.println("喵喵!");

}

public String AnimalsName(){

return "猫";

}

}

public class CCAr {

public static void main(String []args){

Simple animal=new Simple();

Animal ani=new Dog();

animal.playGround(ani);

ani=new Cat();

animal.playGround(ani);

}

}</span>

</span>

答案:

<span style="font-size:18px;">狗的声音是:

汪汪!

猫的声音是:

喵喵!

</span>


接口

接口的声明

interface
接口的名字

接口体中只有抽象方法,没有普通方法,接口体中所有的变量和方法的访问权限一定都是public(允许省略public/abstract修饰符)

接口的使用

用关键字implement来声明自己实现一个或多个接口(多个接口中间用“,”隔开);

例:class A implement B,C,D;

如果一个类实现了某个接口,那么这个类必须重写该接口中的所有方法。

重写的方法的访问权限一定要明显的用public来修饰。

例:

<span style="font-size:18px;">package com.Interface;

interface Computer{

int Max=100;

int f(int x);

}

interface Computere{

void max(int x,int y);

}

class China implements Computer,Computere{

int number;

public int f(int x){

int sum=0;

for(int i=1;i<=x;i++){

sum+=i;

}

return sum+Max;

}

public void max(int x,int y){

//return x>y?x:y;

System.out.println("HHHH!");

}

}

class Japan implements Computer{

int number;

public int f(int x){

return 66+x;

}

}

public class Interface {

public static void main(String []args){

China zhang=new China();

Japan henlu=new Japan();

zhang.number=991898+Computer.Max;

henlu.number=941448+Computer.Max;

zhang.number=100+1;

zhang.max(1, 2);

System.out.println("number:"+zhang.number+"求和"+zhang.f(100));

System.out.println("number:"+henlu.number+"求和"+henlu.f(100));

System.out.println(Computer.Max);

}

}</span>


答案:

<span style="font-size:18px;">HHHH!

number:101求和5150

number:941548求和166

100</span>


类重写的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用类名或接口名直接调用.

如果一个类声明实现一个接口,但没有重写接口中的所有的方法,那么这个类必须是abstract类。

个人理解:如果把类比作是一辆车的话,那么接口就可以比作是一些汽车零件,通过实现这些接口,可以让这辆车更加的强大。

例1:

<span style="font-size:18px;">package com.ljjiekou;

interface Free{

public void shouFree();

}

interface Tiao{

public void tiaoWen();

}

class Chucar implements Free,Tiao{

public void shouFree(){

System.out.println("两元!");

}

public void tiaoWen(){

System.out.println("hair!");

}

}

class Tuocar implements Free{

public void shouFree(){

System.out.println("不差钱儿!");

}

}

public class ljjiekou {

public static void main(String []args){

Chucar chucar=new Chucar();

chucar.shouFree();

chucar.tiaoWen();

Tuocar tuocar=new Tuocar();

tuocar.shouFree();

Free free=new Chucar();

free.shouFree();

//free.tiaoWen();

free=new Tuocar();

free.shouFree();

}

}

</span>

答案:

<span style="font-size:18px;">两元!

hair!

不差钱儿!

两元!

不差钱儿!</span>


例2

<span style="font-size:18px;">package com.jkdt;

interface Advertisement{

public void showAdvertisement();

public String getAd();

}

class Adboard{

public void show(Advertisement adver){

System.out.println(adver.getAd());

adver.showAdvertisement();

}

}

class A implements Advertisement{

public void showAdvertisement(){

System.out.println("没有最好,只有更好!");

}

public String getAd(){

return "飞利浦";

}

}

public class jkdt {

public static void main(String []args){

Adboard adboard = new Adboard();

adboard.show(new A());

}

}</span>


答案:

<span style="font-size:18px;">飞利浦

没有最好,只有更好!<span style="color:#000000;">

</span></span>


接口与abstract的比较

(1)abstaact类和接口都可以有abstract方法。

(2)接口中只可以有常量,不能有变量,而abstract类中既可以有常量也可以有变量。

(3)abstract 类中可以有非abstract 方法,但是接口不可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: