Java学习笔记---继承和super的用法
自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了.
不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了.
继承的关键字:extends
格式如下: class 子类名 extends父类名{
...
}
例如 学生是继承人类这一父类的.
class student extends person{
...
}
如果一个类的声明没有使用关键字extends,则这个类默认是继承Object类的.Object是所有类的父类.Object是java.lang包中的类.
当一个子类继承了一个父类时,子类可以调用父类中的所有方法和成员变量.子类也可以单独自己声明方法或者变量.
下面的代码创建了4个class.分别是Dog,Cat,Animal和包含主函数的Main类.其中Dog和Cat是继承父类Animal的.
Cat继承Animal类:
package com.cnblogs;
public class Cat extends Animal{
//不带参数的默认构造器
public Cat(){
//super();必须出现在构造方法的首行. //this();也如此.
super();
// super("XX",10); 该代码表示调用父类带参的构造器
System.out.println("Cat构造器"); }
/* public String name;
public int age;
public void walk(){
System.out.println("Cat....walk");
}
public void sleep(){
System.out.println("Cat....sleep");
} */
//注解提示
@Override
public void how(){
System.out.println(name +" "+ "Cat....miaomiao");
//super 强制调用父类的show()方法法.
//如果没有super,show();是this.show();的默认写法.
//步骤是:先调用子类的show()方法.子类如果没有show方法才调用父类的show()方法
super.show();
}
public void show(){
System.out.println(name +" "+ "Cat----->show");
}
}
声明Dog类:
package com.cnblogs;
public class Dog extends Animal {
/*public String name;
public int age;
public void walk(){
System.out.println("Dog....walk");
}
public void sleep(){
System.out.println("Dog....sleep");
} */
public void how(){
System.out.println(name +" "+ "Dog....wangwang"); }
}
创建一个Animal的父类:
package com.cnblogs;
//Animal不写继承就是默认继承Object类. //抽象类不能new.传入的是子类的实例对象.
public abstract class Animal extends Object{
public String name;
public int age;
//默认的不带参的构造器
public Animal(){
this("baobao",2);
//this();调用的是下面带参的Animal的方法
System.out.println("Animal--->()");
}
//带参的构造器.给属性赋初始值
public Animal(String name,int age){
this.name = name;
this.age = age;
System.out.println("Animal--->(name,age)");
}
public void walk(){
System.out.println(name + "---->walk");
sleep();
how();
//this.show 调用的是子类的show()方法,如果子类没有show()方法.在调用父类的show()方法.
this.show();
}
public void sleep(){
System.out.println(name + "---->sleep");
}
//抽象方法.
public abstract void how();
public void eat(){
System.out.println(name + "---->Eat");
}
public void play(){
System.out.println(name + "---->Play");
}
public void show(){
System.out.println(name +" "+ "Animal---->show");
}
}
Main类(包含主函数):
package com.cnblogs;
public class Main {
public static void main2(String[] args) {
//生成一个cat对象
Cat cat = new Cat();
cat.name ="xiaohua";
cat.age = 3;
cat.walk();
cat.how();
//生成一个dog对象
Dog dog = new Dog();
dog.name = "xiaomei";
dog.age= 3;
dog.walk();
dog.eat();
dog.how();
//调用的是调出来的对象
Animal animal = new Cat();
animal.name = "HH";
//调用的是子类Cat()的how()方法.
animal.how();
Animal animal2 = new Dog();
animal2.name = "XX";
//调用的是子类Dog()的how方法
animal2.how();
animal.walk();
//GetMsg方法要求传入的是子类cat,所以传入的必须是cat,而不能是animal.
GetMsg(cat);
GetMsg(dog);
GetMsg(animal2);
}
/* public static void GetMsg(Cat cat){
cat.how();
}*/
//将子类的对象传入给父类的引用 //比上面的传入单独的cat灵活,一般使用下面这种方法
public static void GetMsg(Animal animal){
animal.how();
}
/** *1. new一个对象以后先调用子类Cat的第一个方法,运行super();调用父类Animal的第一个方法
*2. 父类中的构造方法执行this();方法,this方法又调用Animal带参数的方法并输出;在返回不带参的构造器执行this();下面的输出语句
*3. 在返回子类Cat中执行super();下面的语句,输出"Cat构造器"
*4. 接着animal.how()调用new出来的对象 cat的how()方法
*5. 执行子类Cat()方法中的how()方法,并输出.
*6. 接着在运行how()方法中的super().show;然后调用父类Animal的show()方法.并输出相应的结果. * */
public static void main(String [] args){
Animal animal = new Cat();
animal.how(); }
}
super();调用父类的构造器,方法和属性.
this();调用该方法的当前对象.
今天博客园居然不能插入代码块,不知道出什么问题只能自己手写,写了半天.看的头都晕了.
Java学习笔记---继承和super的用法的更多相关文章
- java学习笔记-继承中super关键字
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
- Java学习笔记--继承和多态(中)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- java学习笔记 --- 继承
继承 (1)定义:把多个类中相同的成员给提取出来定义到一个独立的类中.然后让这多个类和该独立的类产生一个关系, 这多个类就具备了这些内容.这个关系叫继承. (2)Java中如何表示继承呢?格式 ...
- Java学习笔记--继承和多态(下)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java学习笔记--继承和多态(上)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java学习笔记——继承、接口、多态
浮点数的运算需要注意的问题: BigDecimal operand1 = new BigDecimal("1.0"); BigDecimal operand2 = new BigD ...
- Java学习笔记31(IO:Properties类)
Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客 ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
随机推荐
- IP地址分类与识别错误
//描述: 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. //所有的IP地址划分为 A,B,C,D,E五类 //A类地址1.0.0.0 ...
- SoftLAyer VPN
1,安装softlayer-VPN(即跑VPN客户端)的机器与在SoftLAyer中的HardwareHostServers or VMIServer的privateIP互通
- MinGW安装教程
首先说明一下 1) MinGw只是其中一种GCC编译环境的安装程序,还有像Cygwin也是差不多的; 2) 由于安装的时候有些地方忘了截图,所以图有些是借鉴别人的; 3) 还要就是安装MinGw,最好 ...
- swift基本用法-for循环遍历,遍历字典,循环生成数组
// Playground - noun: a place where people can play import UIKit //--------------------------------- ...
- Office 2010 & SharePoint 2010 Service Pack 2现在可用啦
Access 2010 Runtime SP2 KB2687444 32-bit 64-bit Duet Enterprise for Microsoft SharePoint and SAP SP2 ...
- base64图片在各种浏览器的兼容性处理
IE浏览器目前最高的版本是v11,而微软放弃了IE,转向新的浏览器开发,并取名为Edge.base64图片在IE9及以后的图片均能显示没有问题,而Firefox, Chrome, Safari等非IE ...
- css系列教程--color direction line-height letter-spacing
css标签:colorcolor:用法color:指定文本的颜色color:red/#fff/unicode; direction:用法 direction:定义文本的方向.dirction:ltr/ ...
- APP安全测评checklist
leader不要打我啊,我要借用一下我组app的安全测评检查方案,这些最基本的安全防范措施应该是每个app都要注意的吧: 对了,首先,你的app得先混淆啊~:AndroidStudio 混淆打包 先来 ...
- Java学习—— for循环
For双重循环 /* 循环语句嵌套 */ class ForForTest { public static void main(String[] args) { /*int x,y = 0; for( ...
- SQL Server数据恢复——日志备份
太坑了,我把数据给删了 “大坑啊,数据被我误删了.”从事数据库相关工作的过程中,我想应该很多人会有过和我一样的遭遇吧?尤其是在进行update或者delete操作的时候,忘记了where条件.这些毁灭 ...