对java基础的一个复习总结吧。

1、继承:通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性,一次只能继承一个父类。

2、重写:重写(override)是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。

3、重载:重载(overload) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

4、多态:存在的三个条件

  • 继承
  • 重写
  • 父类引用指向子类对象

5、抽象类:abstract class来定义抽象类。

6、抽象方法:如果一个类包含抽象方法,那么该类必须是抽象类。

7、封装:简单的说就是成员私有,通过set和get方法来获取。

8、接口:是抽象方法的集合,接口通常以interface来声明。

  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了static和final变量。
  • 接口支持多重继承。

9、包(package):Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类

自己写了一段代码来使用以上的知识点。

父类:animals。这是一个抽象类,因为里面声明了抽象方法eat。对于成员变量name,使用了封装的思想,声明为私有,只能通过getName和setName访问。

还有一个move方法,用于给子类重写的。

子类:Cat。实现了eat,重写了move,重载了move,新增了自己的方法sleep。

子类:Dog。实现了eat,重写了move。

以上三个类放在animals包里面。

main.java:

import animals.*;

public class main {

	public static void main(String args[]){

		//父类指向子类引用(向上转型)
animals cat = new Cat("cat");
animals dog = new Dog("Dog"); cat.eat();
dog.eat(); //重写(与父类不同)
cat.move();
dog.move(); //cat.sleep();会报错,因为animals里面没有sleep
//cat。move(5);会报错,因为animals里面没有重载move(int) if(cat instanceof Cat){//判断是不是Cat类的一个实例 Cat newCat = (Cat)cat;//向下转型 System.out.println(newCat.getName());
newCat.sleep();
newCat.move(5);//重载,有相同名字的函数,但是参数列表不同 } } }

animals.java

package animals;

//只能有一个公有类

//有抽象函数,所以为抽象类
public abstract class animals{ private String name;//封装 //构造函数
animals(String name){ this.name = name; } //具体的方法,由子类实现,所以定义为抽象
public abstract void eat(); //同用的方法,用于重写
public void move(){ System.out.println("动物可以移动"); } //通用的方法,父类实现
public void setName(String name){ this.name = name; } public String getName(){ return name; } }

Cat.java

package animals;

//猫
public class Cat extends animals{ //每个类都得有自己的构造函数
public Cat(String name) {
super(name); } //因为继承了动物类,所以成员name,以及setName、getName.move都有的 //因为父类是抽象类,必须实现抽象方法
public void eat(){ System.out.println("猫吃鱼"); } //可以对父类存在的方法进行重写
public void move(){ //调用父类的同名函数
super.move();
System.out.println("猫可以跑!"); } //重载
public void move(int num){ move();
System.out.println("猫跑了"+num+"s"); } //新增的属于自己的方法
public void sleep(){ System.out.println("Slepping!"); } }

Dog.java

package animals;

public class Dog extends animals{

	//每个类都得有自己的构造函数
public Dog(String name) {
super(name); } //因为继承了动物类,所以成员name,以及setName、getName.move都有的 //因为父类是抽象类,必须实现抽象方法
public void eat(){ System.out.println("狗吃啥?"); } //可以对父类存在的方法进行重写
public void move(){ //调用父类的同名函数
super.move();
System.out.println("狗也可以跑!"); }
}

输出:

java面向对象基础复习的更多相关文章

  1. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  2. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

  3. 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符

    [重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符   1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...

  4. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  5. 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用

    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...

  6. 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字

    084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...

  7. 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法

    083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...

  8. 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法

    082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...

  9. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

随机推荐

  1. 最新博客开启 - Noogle's Blogs

    博客地址: http://noogel.xyz/ 戳我进入 Noogle's Blogs

  2. ueditor使用小结【来源网络】

    原文地址:http://www.cnblogs.com/janes/p/5072496.html ueditor是百度编辑器,官网地址:http://ueditor.baidu.com/website ...

  3. CF1130D Toy Train

    D Toy Train 开始时,对于一个点 \(x\) ,若没有糖果需要运走,则不考虑; 否则,若点上有 \(k\) 颗糖果需要运走,火车每次只能搭上 \(1\) 个,显然经过这个点至少 \(k\) ...

  4. BZOJ3675 Apio2014 序列分割 【斜率优化】

    Description 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首 ...

  5. ckeditor使用教程

    ckeditor 的官方网站是 http://ckeditor.com/ 一.使用方法: 1.在页面<head>中引入ckeditor核心文件ckeditor.js <script ...

  6. php基础语法(数据类型、运算符)

    数据类型 标量类型: int, float, string, bool 复合类型: array, object 特殊类型: null, resouce 整数类型int, integer 字符串类型st ...

  7. 怎样创建Linux Initrd

    Linux初始RAM磁盘(initrd)是在系统引导过程中挂载的一个暂时根文件系统,用来支持两阶段的引导过程.initrd文件里包括了各种可运行程序和驱动程序.它们能够用来挂载实际的根文件系统,然后再 ...

  8. python-生成测试报告-然后自动发送邮件

    前两篇单独介绍了生成测试报告和自动发送邮件,那么现在把两者整合到一起:生成测试报告后然后自动发送邮件,这里只是简单的整合实现功能,其实还可以优化的,先用吧,后面再慢慢优化 先看下目录,其实目录还是一样 ...

  9. 优化html标签

    借用Effective之名,开始写Effective系列,总结一些前端的心得. 有些人写页面会走向一个极端,几乎页面所有的标签都用div,究其原因,用div有很多好处,一个是div没有默认样式,不会有 ...

  10. win7环境下,golang thrift demo代码编译不通过

    用官方的教程代码:http://thrift.apache.org/tutorial/go 用网友提供的代码:Golang RPC 之 Thrift 都出现如下情况 状况1: 编辑器中就会提醒 Can ...