对象的上转型对象,接口回调
2015-11-29 23:27
337 查看
初学者。
A类是B类的父类,当用子类创建一个对象,并把这个对象的引用放到父类的对象中,则称对象a是对象b的上转型对象。
一般来说,有两种方法:
A a;
a = new B();或:
A a;
B b = new B();
a = b;
上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。举个例子比较清楚:
class animal
{
int m = 100;
void print(String s)
{
System.out.println(s);
}
}
class people extends animal
{
double m = 25.5;
void print(String s)
{
System.out.println("Look," + s);
}
}
public class first
{
public static void main(String args[])
{
/* 还可以 animal monkey;
* people p = new people();
* monkey = p;
*/
animal monkey;
monkey = new people();
System.out.println(monkey.m); //对象monkey操作的是父类中的变量m
monkey.print("I don't know."); //对象monkey调用的是父类中的print()
}
}输出:
接口
接口声明:interface 接口的名字
接口体中只有抽象方法,未修饰方法默认为public abstract 方法。接口中只有常量,不能有变量。未加final关键字修饰的,默认为常量。
一个类可以使用implements实现一个或者多个接口(这和类的继承不同。java中类只能单继承)。一个类实现接口,必须重写该接口中所有的方法,且必须遵守重写规则,不可以降低方法权限。
公共接口可被任何一个类实现,友好接口只能被同一个包中的类声明实现。
如果一个类声明实现一个接口,并没有重写接口中所有的方法,则这个类必须是abstract类。
举个例子(包括接口回调):
interface Favourite
{
void FavouriteFood();
void FavouriteSport();
}
class Lee implements Favourite
{
public void FavouriteFood() //接口中的方法默认public abstract,重写不能降低权限
{
System.out.println("Lee最爱牛肉");
}
public void FavouriteSport()
{
System.out.println("Lee最爱篮球");
}
}
class Wang implements Favourite
{
public void FavouriteFood()
{
System.out.println("Wang最爱米饭");
}
public void FavouriteSport()
{
System.out.println("Wang最爱足球");
}
}
public class third
{
public static void main(String args[])
{
//下面将进行接口回调,感觉跟一般对象调用方法时差不多
Favourite m1 = new Lee();
Favourite m2 = new Wang();
m1.FavouriteFood();
m2.FavouriteFood();
m1.FavouriteSport();
m2.FavouriteSport();
}
}输出:
Lee最爱牛肉
Wang最爱米饭
Lee最爱篮球
Wang最爱足球
另外,补充一下方法重载与方法重写。
class Aaaa
{
double f(double x, double y)
{
return x + y;
}
}
class Bbbb extends Aaaa
{
double f(int x, int y) //由于方法f()中参数发生了变化,这是方法重载。方法重写的话,方法类型,方法名以及方法中参数都要与父类保持一致
{
return x * y;
}
}
public class val
{
public static void main(String args[])
{
Bbbb b = new Bbbb();
System.out.println(b.f(3, 5));
System.out.println(b.f(3.0, 5.0));
}
}
输出:
15.0
8.0
A类是B类的父类,当用子类创建一个对象,并把这个对象的引用放到父类的对象中,则称对象a是对象b的上转型对象。
一般来说,有两种方法:
A a;
a = new B();或:
A a;
B b = new B();
a = b;
上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。举个例子比较清楚:
class animal
{
int m = 100;
void print(String s)
{
System.out.println(s);
}
}
class people extends animal
{
double m = 25.5;
void print(String s)
{
System.out.println("Look," + s);
}
}
public class first
{
public static void main(String args[])
{
/* 还可以 animal monkey;
* people p = new people();
* monkey = p;
*/
animal monkey;
monkey = new people();
System.out.println(monkey.m); //对象monkey操作的是父类中的变量m
monkey.print("I don't know."); //对象monkey调用的是父类中的print()
}
}输出:
100 Look,I don't know.
接口
接口声明:interface 接口的名字
接口体中只有抽象方法,未修饰方法默认为public abstract 方法。接口中只有常量,不能有变量。未加final关键字修饰的,默认为常量。
一个类可以使用implements实现一个或者多个接口(这和类的继承不同。java中类只能单继承)。一个类实现接口,必须重写该接口中所有的方法,且必须遵守重写规则,不可以降低方法权限。
公共接口可被任何一个类实现,友好接口只能被同一个包中的类声明实现。
如果一个类声明实现一个接口,并没有重写接口中所有的方法,则这个类必须是abstract类。
举个例子(包括接口回调):
interface Favourite
{
void FavouriteFood();
void FavouriteSport();
}
class Lee implements Favourite
{
public void FavouriteFood() //接口中的方法默认public abstract,重写不能降低权限
{
System.out.println("Lee最爱牛肉");
}
public void FavouriteSport()
{
System.out.println("Lee最爱篮球");
}
}
class Wang implements Favourite
{
public void FavouriteFood()
{
System.out.println("Wang最爱米饭");
}
public void FavouriteSport()
{
System.out.println("Wang最爱足球");
}
}
public class third
{
public static void main(String args[])
{
//下面将进行接口回调,感觉跟一般对象调用方法时差不多
Favourite m1 = new Lee();
Favourite m2 = new Wang();
m1.FavouriteFood();
m2.FavouriteFood();
m1.FavouriteSport();
m2.FavouriteSport();
}
}输出:
Lee最爱牛肉
Wang最爱米饭
Lee最爱篮球
Wang最爱足球
另外,补充一下方法重载与方法重写。
class Aaaa
{
double f(double x, double y)
{
return x + y;
}
}
class Bbbb extends Aaaa
{
double f(int x, int y) //由于方法f()中参数发生了变化,这是方法重载。方法重写的话,方法类型,方法名以及方法中参数都要与父类保持一致
{
return x * y;
}
}
public class val
{
public static void main(String args[])
{
Bbbb b = new Bbbb();
System.out.println(b.f(3, 5));
System.out.println(b.f(3.0, 5.0));
}
}
输出:
15.0
8.0
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python动态类型的学习---引用的理解
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树