博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中面向对象的一点学习总结
阅读量:7194 次
发布时间:2019-06-29

本文共 2584 字,大约阅读时间需要 8 分钟。

hot3.png

最近开始看java的一些东西,感觉比python麻烦些,今天学习了面向对象的一些东西,觉得挺多挺复杂,这里做个知识总结

以一个简单的例子来说明java面向对象的三大特性,封装,继承,多态,有一个动物(Animal)基类,定义了run与eat方法,然后有一个猫(Cat)与狗(Dog)的子类继承了动物这个父类,子类重写(override)了父类的run与eat方法,同步又重载(overload)了run与eat方法,同时又定义了一个交配(Icopulation)的接口,让狗来implements交配接口,同时又创建一个Human类来专门implements交配接口

下面是具体的实现代码,没有什么实际的应用,只是作为学习用

Animal.java 这个是父类

package com.yangyanxing.www;//这里是定义了一个Animal的基类public class Animal {	public void run(){		System.out.println("我是所有动物的跑");	}	public void eat(){		System.out.println("我是所有动物在吃");	}}

Icopulation.java 交配的接口

package com.yangyanxing.www;//这里定义了一个接口类,动物应该都具有交配public interface Icopulation {	public void copulation();//这里是一个规范,要有交配方法,具体怎么实现要子类去实现}

 

Dog.java Dog的子类

package com.yangyanxing.www;//这里定义了一个狗的类继承Animal基类public class Dog extends Animal implements Icopulation {	//对父类的方法进行重写(override) 方法的返回值类型与参数都不能变	public void run(){		System.out.println("我是一条狗在跑");	}	//方法的重载(overload)只是参数的数量与类型不同,返回值与权限都要相同	//这里由于父类里的run方法没有重载,所以使用多态创建的子类引用也不能使用带参数的run(5)	public void run(int a){		System.out.printf("我是只狗,已经跑了%d公里了\n",a);	}	public void eat(){		System.out.println("我是一条狗是吃");	}	//这里是狗自已的方法,不是从基类继承的	public void creame(){		System.out.println("这是一条狗在叫");	}	public void copulation(){		System.out.println("狗在交配");	}}

 

Cat.java Cat子类

package com.yangyanxing.www;public class Cat extends Animal {	public void run(){		System.out.println("我是一只猫在跑");	}	public void eat(){		System.out.println("我是一条猫是吃");	}	public void eat(String food){		System.out.printf("我是只猫,我正在吃%s\n",food);	}	//这里是猫自已的方法,不是从基类继承的	public void creame(){		System.out.println("这是一条猫在叫");	}}

 

Human.java 实现了交配的Human类

package com.yangyanxing.www;public class Human implements Icopulation {	@Override	public void copulation() {		// TODO Auto-generated method stub		System.out.println("人在交配");	}}

Testoob.java 具体的测试代码

package com.yangyanxing.www;//这里不用import 引用,在同一个包里public class Testoob {	public static void main(String[] args) {		// TODO Auto-generated method stub		Animal a  = new Animal();		Animal a1 = new Dog();//多态,使用父类创建子类的引用		Animal a2 = new Cat();		Dog dog = new Dog();		Cat cat = new Cat();		a.run();		a.eat();				a1.run();				a1.eat();		//a1.creame();//多态父类创建的子类不能使用子类自已的方法		a2.run();		a2.eat();		dog.creame();//不是通过多态创建的子类可以使用自已的方法		cat.creame();		cat.eat("鱼");		dog.run(5);		//a2.eat("fish");//这里会出错,因为父类里没有定义带参数的eat()方法				Icopulation idog = new Dog();		idog.copulation();				Icopulation ihuman = new Human();		ihuman.copulation();	}}

以下是程序运行的输出结果

我是所有动物的跑

我是所有动物在吃
我是一条狗在跑
我是一条狗是吃
我是一只猫在跑
我是一条猫是吃
这是一条狗在叫
这是一条猫在叫
我是只猫,我正在吃鱼
我是只狗,已经跑了5公里了
狗在交配
人在交配

转载于:https://my.oschina.net/yangyanxing/blog/306157

你可能感兴趣的文章
Ajax.BeginForm 防止跳转到新页面
查看>>
C# 将扁平状数据链接成树状结构的通用方法
查看>>
Visual Studio-IIS Express 支持局域网访问配置
查看>>
关于unity里pbr技术和材质 unity5默认shader和传统的对比
查看>>
前端性能监控方案window.performance 调研(转)
查看>>
Simotion 监控问题:Could not add self-signed certificate to certificate store.
查看>>
常微分方程_阿诺尔德 1.1节,问题6 擴張相空間沿時間軸的平移變換將積分曲線變爲積分曲線...
查看>>
取年月日的字符串方法
查看>>
使用JQuery和CSS3两种方法实现瀑布流布局
查看>>
公用技术——设计模式9——结构型模式——桥接模式——待补充1
查看>>
percona-toolkit工具包的安装和使用
查看>>
P1059 明明的随机数【去重排序】
查看>>
广东工业大学2017新生赛(决赛)网络同步赛题解
查看>>
synchoronized和lock区别
查看>>
字节流、字符串、16进制字符串转换__java
查看>>
送给连里和班里那些亲儿们(终结)
查看>>
随笔2
查看>>
Halcon算子翻译——read_measure
查看>>
mbp安装mysql
查看>>
Max Tree
查看>>