2019-1-18 笔记作业

一、类的访问修饰符

  1、public修饰符:公有访问级别

    同包中可直接访问,不同包中导入类所在的包即可访问

  同包中:

  不同包中:

 

  2、默认修饰符:包级私有访问级别

   同包中:

  不同包中:

二、类成员访问修饰符及作用域

   

  1、private:只能在同一个类中访问

  

  

  2、默认修饰符:同一类或同一个包中可以访问,同一包中的子类也可以访问

  

  

  不同包无法访问:

  

  在同一个包的子类可以访问:

  

  不同包中的子类无法访问:

  

  3、protected:在同一类或同一包中以及同一包中的子类可以访问

  

  

  同一包中的子类:

  

  

   不同包中的子类无法访问:

  

  

  

  4、public:任何地方都可以进行访问

三、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、使用继承方法实现宠物店(狗、企鹅、猫)

  宠物类:

package com.java_1_18_lianxi;

public class Pet {
	private String name;//名字
	private int health;//健康值
	private int macy;//亲密度
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getHealth() {
		return health;
	}
	
	public void setHealth(int health) {
		if(health>100||health<0) {
			this.health = 60;
			System.out.println("健康值在0到100之间,您的输入有误,默认60!");
		}else {
			this.health = health;
		}
	}
	
	public int getMacy() {
		return macy;
	}
	
	public void setMacy(int macy) {
		if(macy>100||macy<0) {
			this.macy = 60;
			System.out.println("亲密度在0到100之间,您的输入有误,默认60!");
		}else {
			this.macy = macy;
		}
	}
	
	public void print() {
		System.out.println("宠物的自白:");
		System.out.println("我的名字是:"+this.name+",健康值是:"+this.health+",和主人的亲密度是:"+this.macy);
	}
	
}

  狗类:

package com.java_1_18_lianxi;

public class Dog extends Pet{

	private String strain; //品种
	
	public String getStrain() {
		return strain;
	}

	public void setStrain(String strain) {
		this.strain = strain;
	}

	public void print() {
		super.print();
		System.out.println("我是:"+this.strain);
	}
}

  企鹅类:

package com.java_1_18_lianxi;

public class Penguin extends Pet {

	private String sex;//性别
	
	public String getSex() {
		return sex;
	}
	public void setSex(int sex) {
		if(sex==1) {
			this.sex = "Q仔";
		}else {
			this.sex = "Q妹";
		}	
	}
	
	public void print() {
		super.print();
		System.out.println("我的性别是:"+this.sex);
	}
}

  猫类:

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+"色!");
	}
}

  主程序:

package com.java_1_18_lianxi;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);
		Penguin p = new Penguin();
		Dog d = new Dog();
		Cat c = new Cat();
		System.out.println("欢迎来到宠物店!");
		System.out.print("请输入要领养宠物的名字:");
		String name = cxj.next();
		System.out.print("请输入您要领养宠的类型(1、狗	2、企鹅	3、猫):");
		int select = cxj.nextInt();
		switch(select) {
		case 1:
			d.setName(name);
			System.out.print("请选择狗狗的健康值:");
			d.setHealth(cxj.nextInt());
			System.out.print("请输入狗狗的亲密度:");
			d.setMacy(cxj.nextInt());
			System.out.print("请输入狗狗的品种:");
			d.setStrain(cxj.next());
			d.print();
			break;
		case 2:
			p.setName(name);
			System.out.print("请选择企鹅的健康值:");
			p.setHealth(cxj.nextInt());
			System.out.print("请输入企鹅的亲密度:");
			p.setMacy(cxj.nextInt());
			System.out.print("请选择企鹅的性别(1、Q仔	2、Q妹):");
			p.setSex(cxj.nextInt());
			p.print();
			break;
		case 3:
			c.setName(name);
			System.out.print("请选择猫猫的健康值:");
			c.setHealth(cxj.nextInt());
			System.out.print("请输入猫猫的亲密度:");
			c.setMacy(cxj.nextInt());
			System.out.print("请选择猫猫的毛色:");
			c.setColour(cxj.next());
			c.print();
			break;
		default:
			System.out.println("您的输入有误!");	
		}
	}
}

  结果:

猜你喜欢

转载自www.cnblogs.com/chenxj/p/10286662.html
今日推荐