继承,修饰符
Posted cheng1994
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承,修饰符相关的知识,希望对你有一定的参考价值。
static静态修饰符
一)、static可用来修饰
1、成员变量:静态变量,可以直接通过类名访问
2、成员方法:静态方法,可以直接通过类名访问
3、代码块:静态代码,当java虚拟机加载类时,就会执行代码块
二)、类的成员变量
1、类变量(静态变量)
A、被static修饰的变量
B、在内存中只有一个拷贝
C、类内部,可以在任何方法内直接访问静态变量
D、其它类中,可直接通过类名访问
2、实例变量
A、没有被static修饰的变量
B、每创一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响
3、static方法
A、静态方法:可直接通过类名访问
a、静态方法中不能使用this和super
b、不能直接访问所属类的实例变量和实例方法
c、可直接访问类的静态变量和静态方法
B、实使方法:通过实例访问
可直接访问所属类的静态变量、静态方法、实例变量和实例方法
C、静态方法必须被实现
三)、代码块
1、如果对象不创建,则普通代码块不能够被执行,当然,普通方法也无法调用;
2、如果对象不创建,静态代码块依然能够被执行,而且,静态方法可直接通过类调用;
3、说明,普通属性、方法、代码块是对象级别的;
静态属性、方法、代码块是类级别的;
PS:
JVM加载静态代码块时,如果有多个静态代码块时,会按顺序执行,但静态代码码只会被执行一次
四、继承
一)、继承是代码重用的一种方式:将子类共有的属性和行为放到父类中
1、可以使用super关键字,super代表父类
2、在子类构造 方法中调用且必须是第一句
3、不可以访问父类中定义为private的属性和方法
4、super关键字来访部父类的成员
二)、子类继承父类的什么
1、继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里
2、不在同一个包中,父类中被默认权限修饰符的属性和方法无法被继承
3、父类中被private修饰的成员、以及父类构造方法无法被继承
1、使用继承方法实现宠物店(狗、企鹅、猫)
1 public class Pet { 2 private String name;//名字 3 private int health;//健康值 4 private int macy;//亲密度 5 6 public String getName() { 7 return name; 8 } 9 10 public void setName(String name) { 11 this.name = name; 12 } 13 14 public int getHealth() { 15 return health; 16 } 17 18 public void setHealth(int health) { 19 if(health>100||health<0) { 20 this.health = 60; 21 System.out.println("健康值在0到100之间,您的输入有误,默认60!"); 22 }else { 23 this.health = health; 24 } 25 } 26 27 public int getMacy() { 28 return macy; 29 } 30 31 public void setMacy(int macy) { 32 if(macy>100||macy<0) { 33 this.macy = 60; 34 System.out.println("亲密度在0到100之间,您的输入有误,默认60!"); 35 }else { 36 this.macy = macy; 37 } 38 } 39 40 public void print() { 41 System.out.println("宠物的自白:"); 42 System.out.println("我的名字是:"+this.name+",健康值是:"+this.health+",和主人的亲密度是:"+this.macy); 43 } 44 45 }
1 package com.java_1_18_lianxi; 2 3 public class Dog extends Pet{ 4 5 private String strain; //品种 6 7 public String getStrain() { 8 return strain; 9 } 10 11 public void setStrain(String strain) { 12 this.strain = strain; 13 } 14 15 public void print() { 16 super.print(); 17 System.out.println("我是:"+this.strain); 18 } 19 }
1 package com.java_1_18_lianxi; 2 3 public class Penguin extends Pet { 4 5 private String sex;//性别 6 7 public String getSex() { 8 return sex; 9 } 10 public void setSex(int sex) { 11 if(sex==1) { 12 this.sex = "Q仔"; 13 }else { 14 this.sex = "Q妹"; 15 } 16 } 17 18 public void print() { 19 super.print(); 20 System.out.println("我的性别是:"+this.sex); 21 } 22 }
package com.java_1_18_lianxi; public class Cat extends Pet { private String colour;//颜色 public String getColour() { return colour; } public void setColour(String colour) { this.colour = colour; } public void print() { super.print(); System.out.println("我的毛色是:"+this.colour+"色!"); } }
1 package com.java_1_18_lianxi; 2 3 import java.util.Scanner; 4 5 public class Test { 6 public static void main(String[] args) { 7 Scanner cxj = new Scanner(System.in); 8 Penguin p = new Penguin(); 9 Dog d = new Dog(); 10 Cat c = new Cat(); 11 System.out.println("欢迎来到宠物店!"); 12 System.out.print("请输入要领养宠物的名字:"); 13 String name = cxj.next(); 14 System.out.print("请输入您要领养宠的类型(1、狗 2、企鹅 3、猫):"); 15 int select = cxj.nextInt(); 16 switch(select) { 17 case 1: 18 d.setName(name); 19 System.out.print("请选择狗狗的健康值:"); 20 d.setHealth(cxj.nextInt()); 21 System.out.print("请输入狗狗的亲密度:"); 22 d.setMacy(cxj.nextInt()); 23 System.out.print("请输入狗狗的品种:"); 24 d.setStrain(cxj.next()); 25 d.print(); 26 break; 27 case 2: 28 p.setName(name); 29 System.out.print("请选择企鹅的健康值:"); 30 p.setHealth(cxj.nextInt()); 31 System.out.print("请输入企鹅的亲密度:"); 32 p.setMacy(cxj.nextInt()); 33 System.out.print("请选择企鹅的性别(1、Q仔 2、Q妹):"); 34 p.setSex(cxj.nextInt()); 35 p.print(); 36 break; 37 case 3: 38 c.setName(name); 39 System.out.print("请选择猫猫的健康值:"); 40 c.setHealth(cxj.nextInt()); 41 System.out.print("请输入猫猫的亲密度:"); 42 c.setMacy(cxj.nextInt()); 43 System.out.print("请选择猫猫的毛色:"); 44 c.setColour(cxj.next()); 45 c.print(); 46 break; 47 default: 48 System.out.println("您的输入有误!"); 49 } 50 } 51 }
以上是关于继承,修饰符的主要内容,如果未能解决你的问题,请参考以下文章