java中面向对象的一点学习总结

Wesley13
• 阅读 821

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

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

java中面向对象的一点学习总结

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

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公里了
狗在交配
人在交配

点赞
收藏
评论区
推荐文章
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java中多态的实现机制
多态的概念:  简单来说就是事物在运行过程中存在的不同状态,即父类或接口定义的引用变量指向子类或具体实现类的实例对象。程序调用方法在运行期才进行动态绑定,而不是引用变量的类型中定义的方法。多态存在的前提:1、存在继承关系,子类继承父类;2、子类重写父类的方法;3、父类引用指向子类对象。具体实例:1、定义一个父类:Animal
Wesley13 Wesley13
3年前
java中经常问到的面试题
1、面向对象编程的三大特性是什么?(1).继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例
Wesley13 Wesley13
3年前
JS实现继承的几种方式
前言JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。JS继承的实现方式既然要实现继承,那么首先我们得有一个父类,代码如下://定义一个动物类functionAnimal(name){//属性this.name
Wesley13 Wesley13
3年前
Java面试题(一)
看到一篇不错的java面试题的文章,自己整理一下,作为备用吧!Java面试题面向对象的特征有哪些方面?封装最常见的是把属性私有化封装在一个类里面,只能通过方法去访问继承子类继承父类,从而继承了父类的方法和属性抽象
Wesley13 Wesley13
3年前
JAVA面向对象
一、java面向对象的特征?答:java面向对象的特征:封装、继承、多态、抽象。如果问java面向对象的三大特征是什么?那就是封装、继承、多态,但说到面向对象,还有一个很主要的特征就是抽象。1、封装a)铺垫:Java把真实世界中某些具有共同特征的实体抽象成Java中的类,类的实例就是一个对象,而对象和真实世界的实体是一一
Wesley13 Wesley13
3年前
JAVA 基础知识
JAVA纯面向对象语言,有平台无关性,一次编译到处运行,编辑器会把java代码变成中间代码,然后在JVM上解释执行。拥有很多内置的类库,提供了对Web应用开发的支持,具有较好的安全和健壮性。JAVA和C的异同都是面向对象语言使用了面向对象的思想(封装,继承,多态),面向对象的特性(继承和组合)  面向对象有以下特点:  (1
可莉 可莉
3年前
20175317 《Java程序设计》第四周学习总结
20175317《Java程序设计》第四周学习总结教材学习内容总结第四周我学习了教材第五章的内容,了解了子类与继承的知识,学到了以下内容:明白了什么是子类与父类、类的树形结构。子类和父类在同一包中、不在同一包中时的继承性。子类与对象,子类对象的特点。成员变量的隐藏与方
Stella981 Stella981
3年前
20175317 《Java程序设计》第四周学习总结
20175317《Java程序设计》第四周学习总结教材学习内容总结第四周我学习了教材第五章的内容,了解了子类与继承的知识,学到了以下内容:明白了什么是子类与父类、类的树形结构。子类和父类在同一包中、不在同一包中时的继承性。子类与对象,子类对象的特点。成员变量的隐藏与方