定义一个Book类,在定义一个JavaBook类继承他

//book类
package com.hanqi.maya.model;
public class Book {
public String name;
public int no;
public Book(){ }
public Book(String name1,int no1){
name =name1;
no=no1;
}
public String show(){
return "书名是:"+name+","+"页数:"+no;
} }
//javaBook类继承
package com.hanqi.maya.model;
public class JavaBook extends Book{
public String nandu;
public JavaBook(){ }
public JavaBook(String nandu1){
nandu=nandu1;
} public String show(){
String str=super.show();
str+="难度是"+nandu;
return str;
}
}
//主函数
package com.hanqi.maya.main;
import com.hanqi.maya.model.JavaBook;
public class Main {
public static void main(String[] args){
JavaBook j=new JavaBook("21");
j.name="21天";
j.nandu="初级";
j.no=20;
String s=j.show();
System.out.println(s);
}
}

super关键字。和this相对,对父类对象的引用

子类继承父类,子类的构造方法必须调用父类的构造方法,动用哪一个都行,如果子类没有去调用,子类会默认调用父类的空参构造方法,这个时候父类中如果没有空参构造方法,会报错

//父类
package com.hanqi.maya.model;
public class Book {
public String name;
public int no;
public Book(){ }
public Book(String name1,int no1){
name =name1;
no=no1;
}
public String show(){
return "书名是:"+name+","+"页数:"+no;
}
}
//子类
package com.hanqi.maya.model;
public class JavaBook extends Book{
public String nandu;
public JavaBook(){ }
public JavaBook(String name1,int nol,String nandu1){
//父类对象的引用,这一行代表调用了父类构造函数
//需要注意这里的括号里的参数,和方法里的内容,他们的类型的顺序要是一样的,和后面实例化传入的参数的顺序也要是一样的
//子类继承父类,子类的构造方法必须调用父类的构造方法,动用哪一个都行,如果子类没有去调用,子类会默认调用父类的空参构造方法,这个时候父类中如果没有空参构造方法,会报错
super(name1,nol);
nandu=nandu1;
} public String show(){
String str=super.show();
str+="难度是"+nandu;
return str;
}
}
//主方法
package com.hanqi.maya.main;
import com.hanqi.maya.model.JavaBook;
public class Main {
public static void main(String[] args){
//注意这里的类型顺序要和构造方法中一样
JavaBook j=new JavaBook("21",20,"初级");
/*j.name="21天";
j.nandu="初级";
j.no=20;
*/
String s=j.show();
System.out.println(s);
}
}

this关键字

this代表类本身

package com.hanqi.maya.model;

//book类
public class Book {
public String name;
public int no;
public Book(){ }
public Book(String name,int no){
//这个类里的name
this.name=name;
this.no=no;
}
/*public Book(String name1,int no1){
name =name1;
no=no1;
}*/
public String show(){
return "书名是:"+name+","+"页数:"+no;
}
}
//JavaBook子类
package com.hanqi.maya.model;
public class JavaBook extends Book{
public String nandu;
public JavaBook(){ }
public JavaBook(String name1,int nol,String nandu1){
//父类对象的引用,这一行代表调用了父类构造函数
//需要注意这里的括号里的参数,和方法里的内容,他们的类型的顺序要是一样的,和后面实例化传入的参数的顺序也要是一样的
//子类继承父类,子类的构造方法会默认调用父类的构造方法,,子类会默认加一个super(),
super(name1,nol);
nandu=nandu1;
} public String show(){
String str=super.show();
str+="难度是"+nandu;
return str;
}
}

宠物栗子,可以显示,取名,玩耍,喂食,显示信息

//宠物类   父类
package com.hanqi.maya.model; import java.util.Scanner; public class Pet {
public String lx;
protected String name;//
protected int sex;//
protected int age;
protected int happy;//
protected int healthy;//
protected int hungry;//
public static int uName;
public Pet(){
}
public Pet(int sex){
this.sex=sex;
this.age=1;
this.happy=80;
this.healthy=100;
this.hungry=80;
} public void playGame(){
if(!check()){
System.out.println("各项属性值不能为负数");
return;
}
System.out.println(this.name+"正在和你玩耍");
this.happy+=10;
this.healthy-=5;
this.hungry+=12;
}
/*public void quName(){
Scanner sca=new Scanner(System.in);
String s = sca.nextLine();
this.name=s;
}*/
public void eat(){
if(!check()){
System.out.println("各项属性值不能为负数");
return;
}
System.out.println(this.name+"正在吃饭");
this.healthy+=5;
this.hungry-=20;
}
public boolean check(){
if(this.happy>=0&&this.healthy>=0&&this.hungry>=0){
return true;
}
if(happy<0){
happy=0;
}
if(healthy<0){
healthy=0;
}
if(hungry<0){
hungry=0;
}
return false;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHappy() {
return happy;
}
public void setHappy(int happy) {
this.happy = happy;
}
public int getHealthy() {
return healthy;
}
public void setHealthy(int healthy) {
this.healthy = healthy;
}
public int getHungry() {
return hungry;
}
public void setHungry(int hungry) {
this.hungry = hungry;
} }
//猫类  子类
package com.hanqi.maya.model; public class Cat extends Pet{
public Cat(){ }
public Cat(int catSex){
super(catSex);
}
public void show(){
System.out.println("名称:"+this.name);
System.out.println("性别:"+this.sex);
System.out.println("年龄:"+this.age);
System.out.println("开心值:"+this.happy);
System.out.println("健康值:"+this.healthy);
System.out.println("的饥饿值:"+this.hungry);
} }
//主方法
package com.hanqi.maya.model;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Cat cat=new Cat(1);
Scanner sc=new Scanner(System.in);
boolean flag=true;
while(flag){
printControl();
String s=sc.nextLine();
if("0".equals(s)){
String quna=sc.nextLine();
cat.name=quna;
}else if("1".equals(s)){
cat.show();
}else if("2".equals(s)){
cat.eat();
}else if("3".equals(s)){
cat.playGame();
}else if("bye".equals(s)){
System.out.println("bye bye");
flag=false;
} }
sc.close();
}
public static void printControl(){
System.out.println("x.选择宠物");
System.out.println("0.给宠物取个名字吧");
System.out.println("1 .显示信息");
System.out.println("2 .吃饭");
System.out.println("3 .玩游戏");
}
}

Java之面向对象例子(二)的更多相关文章

  1. java复习面向对象(二)

    java复习面向对象(二) 1.static关键字 举例图片 静态变量 使用static修饰的成员变量是静态变量 如果一个成员变量使用了关键字static,那么这个变量不属于对象自己,而属于所在的类多 ...

  2. Java之面向对象例子(三) 多态,重写,重载,equals()方法和toString()方法的重写

    重写(继承关系) 子类得成员方法和父类的成员方法,方法名,参数类型,参数个数完全相同,这就是子类的方法重写了父类的方法. 重载 在一个类里有两个方法,方法名是完全一样的,参数类型或参数个数不同. 例子 ...

  3. Java之面向对象例子(一)

    定义一个人类,给这个类定义一个从身份证获取生日的方法,输入身份证,获取出生年月日 //主方法 package com.hanqi.maya.model; import java.util.Scanne ...

  4. Java基础&面向对象(二)

    (七)函数 1.数的定义:具有特定功能的一段小程序,也称为方法: 2.函数的特点: 3.函数的应用:结果.是否需要未知内容参与运算: 4.函数的重载:在同一个类中,允许存在一个以上的同名函数,只要它们 ...

  5. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  6. java面向对象总结(二)

    Java 封装 实现Java封装的步骤 java面向对象值继承 概念: 继承的格式: 类和类之间的关系: 继承的特点: 继承的优缺点 继承的好处: 继承的缺点: 继承的注意事项: 使用继承的步骤: J ...

  7. 2018-2019-2 20175227张雪莹《Java程序设计》 实验二《Java面向对象程序设计》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...

  8. 20165230 《Java程序设计》实验二(Java面向对象程序设计)实验报告

    20165230 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...

  9. 20155202 《Java程序设计》实验二(面向对象程序设计)实验报告

    20155202 <Java程序设计>实验二(面向对象程序设计)实验报告 代码托管 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

随机推荐

  1. YII缓存依赖的应用

    YII缓存依赖的应用 缓存 缓存依赖 Yii 缓存是提升Web应用性能的简便有效的方式.当我们在加载网页需要过多的时间,比如说查询时间过久,抑或是调用接口占用过多I/O,建立缓存是一个行之有效的方法, ...

  2. poj3648

    poj3648 题意 有一对新人结婚,n-1对夫妇去参加婚礼.有一个很长的座子,新娘与新郎坐在座子的两边(相反).接下来n-1对夫妇就坐,其中任何一对夫妇都不能坐在同一边,且(有一些人有奸情)这些有奸 ...

  3. JavaScript 循环性能比较

    有一句话叫做 没有什么事是一个循环解决不了的,如果真有,那就再来一个循环. 循环的种类有很多 正向for循环,逆向for循环,while循环,for-in循环(理论上性能最差),for-each循环, ...

  4. 15.Three Sum

    思路 直接暴力,\(O(n^4 log(n))\),不出意外的超时了.. class Solution { public: vector<vector<int>> threeS ...

  5. laytpl : 一款非常轻量的JavaScript模板引擎

    //假设你得到了这么一段数据 var data = { title: '前端圈', intro: '一群码js的骚年,幻想改变世界,却被世界改变.', list: [{name: '贤心', city ...

  6. vue init webpack-simple project 报错处理(connect ETIMEDOUT 192.30.253.112)

    Failed to download repo vuejs-templates/webpack-simple: connect ETIMEDOUT 192.30.253.113:443 Failed ...

  7. Java线程间通信之wait/notify

    Java中的wait/notify/notifyAll可用来实现线程间通信,是Object类的方法,这三个方法都是native方法,是平台相关的,常用来实现生产者/消费者模式.我们来看下相关定义: w ...

  8. 原生JS+Canvas实现五子棋游戏

    一.功能模块 先看下现在做完的效果: 线上体验:https://wj704.github.io/five_game.html 主要功能模块为: 1.人机对战功能 2.悔棋功能 3.撤销悔棋功能 二.代 ...

  9. Web设计思想——渐进增强

    最近在拜读一本Web体验相关的书<渐进增强--跨平台用户体验设计 >,阅读后做些总结,消化一下书中的精髓. 在阅读本文前,可以先思考下面几个问题. 1. 浏览网页的目的是什么? 2. 浏览 ...

  10. PHPCMS v9 自定义表单添加验证码

    1.  在 \phpcms\templates\default\formguide\show.html 中添加验证码显示 <input type="text" id=&quo ...