java面向对象基础复习
对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面向对象基础复习的更多相关文章
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
随机推荐
- HDU1671 水题字典树
#include<cstdio> #include<cstdlib> #include<iostream> #include<cstring> #inc ...
- bzoj 4811 由乃的OJ
bzoj 4811 由乃的OJ 考虑树链剖分. 树剖后用一颗线段树维护一段连续区间,类似于一个函数,各位上进入 \(0/1\) ,输出的数字分别是什么.注意到最多只有 \(64\) 位,可以用一个 \ ...
- python(七):元类与抽象基类
一.实例创建 在创建实例时,调用__new__方法和__init__方法,这两个方法在没有定义时,是自动调用了object来实现的.python3默认创建的类是继承了object. class A(o ...
- Windows常用配置和sublime快捷键
常用配置和快捷键 1.操作系统常用配置 (1)系统调整为最佳性能 (2)文件夹显示设置:显示文件类型.显示路径 (3)任务栏设置:锁定任务栏+使用小图标2.操作系统常用快捷键 win+数字键--快速打 ...
- sentry docker-compsoe 安装以及简单使用
1. 准备环境 docker docker-compose 2. 安装 a. docker-compose git clone git clone https://github.com/get ...
- JS脚本不能运行
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/moqiang02/article/details/25898295 这段时间在做前端的动态页面,出了 ...
- JavaFX 之窗口拖动(三)
一.问题场景 在上一篇中,我们将窗口的默认标题栏隐藏从而导致鼠标点击窗体无法进行拖动. 二.解决思路 给组件添加鼠标按下事件监听器和鼠标拖动事件监听器. 三.代码实现 /** * 程序入口 * @au ...
- MEF学习总结(3)---Attribute Model Programing
上一片介绍了Primitive层,Attribute Model可以认为是对Primitive的上层实现.主要包括如下内容: 1. 一系列的Attribute来定义Import和Export 常用的有 ...
- jdk1.8新特性之lambda表达式
lambda表达式其实就是指一个匿名函数,应用最广泛的就是匿名内部类的简化.在jdk1.8之前,我们定义一个匿名内部类可能需要写一大坨代码,现在有了lambda之后,可以写的很简洁了.但不是说lamb ...
- 在ubuntu下,进行php7源码安装
作为一名php的攻城师,如果没有玩php源码安装是说不过去的.我们知道php之所以这么流行,跟它的开源文化和lamp配套有很大关系.由于PHP7废弃了很多功能,所以一些依赖这些功能的程序可能无法运行, ...