笔记06

一、修饰符

访问控制符修饰成员时的访问权限如下表:

修饰符本类同一个包中的类子类其他类
public可以访问可以访问可以访问可以访问
protected可以访问可以访问可以访问不能访问
默认可以访问可以访问不能访问不能访问
private可以访问不能访问不能访问不能访问

private的使用

通过对象直接访问成员变量,这样操作,会引起数据安全问题,
考虑:能不能不让外界直接访问对象的成员变量 -----使用private解决
private
是一个修饰符
可以修饰成员变量,也可以修饰成员方法
被private修饰的成员只能在本类中被访问
提供相应的getXxx()和steXxx()方法只能用于获取和设置成员变量的值
方法用public修饰

代码实现

public class Student {
	//成员变量
	private  String name;
	
	
	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}



	private int age;

	
	public int getAge()
	{
		return age;
		}
	
		
		public void setAge(int age){
		
		  if (age<0|| age>150){
			  System.out.println("年龄不符合");
			  
		  }
		  else{
			  this.age=age;
			  }
	}
    
		//成员方法
	    public void printInFo(){
	    	System.out.println("----------");
	    	System.out.println("姓名"+name);
	    	System.out.println("年龄"+age);
	    	
	    }
}

  public class StudentTest {
	public static void main(String[] args){
    
	Student s=new  Student();
	//s.name="老刘";
	//s.age=18;
	
  
    //s.age=20;
    s.setName("dtgc");
   	String name=s.getName();
    s.setAge(30);
	int age=s.getAge();
	 s.printInFo();
	}
	
}

运行结果:

二、接口、final、多态

2.1接口的概述

接口可以看做特殊的抽象类,即只包含有抽象方法的抽象类:

interface Baller{

​ public static int DEFAULT_SPEED=50;

​ public void run();

}

2.2接口的实现

1.与继承不同,一个类可以实现多个接口,实现接口直接用逗号分隔,当然,该类需要实现这些接口中定义的所有方法

2.一个类中可以通过implements 关键字’'实现“接口,一个类实现了某个接口后必须实现该接口中定义的所有方法。

3.接口间可以存在继承关系,一个接口可以通过extends关键字继承另外一个接口。子接口继承了父接口定义的所有方法。

2.3接口的优点

1.类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口,类与类之间是继承关系,java中的继承是单一继承,一个类只能有一个父类,打破了继承的局限性

2.对外提供规则(USB接口)

3.降低了程序的耦合性(可以实现模块开发,定义好规则,每个人实现自己的模块,提高了开发效率)

代码实现:

package day06;

import day06.AbstractDemo2.employee;
/*NBA篮球运动员和教练
 * 乒乓球运动员和教练
 * 现在NBA篮球运动员和教练要来中国访问学习,学习汉语;
 * 根据所学知识,分析出类,继承,接口,
 * 分析:
 * 由下而上,向上抽取的过程
 * 写:
 * 由上而下,,实现共性
 */



public class Person {
	   String name;
	   int age;
	   char gender;
	   
	   //无参构造方法
	   public Person(){
		   
		   
	   }
	   
	   public Person (String name,int age,char gender){
		   this.name=name;
		   this.age=age;
		   this.gender=gender;
		   
		   
	   }
	   public void printInfo(){
			System.out.println("姓名"+name+"年龄"+age+"性别"+gender);
		}

		     
	   
	   public void eat(){
		   System.out.println();
	   }
	   public void sleep(){
		   System.out.println();
	   }
	   
	   
	}

	interface SpeakChinese{
		public abstract void speak();
	}

	 abstract class Player extends Person{
		 public abstract void study();
	 } 
	 
	 abstract class Coach extends Person{
		 public abstract void teach();
	 } 
	 
	 
	 
	//运动员
	class BasketBallPlayer extends Player implements SpeakChinese{

			@Override
			public void study() {
				// TODO Auto-generated method stub
				System.out.println("学习扣篮");

			}

			@Override
			public void speak() {
				// TODO Auto-generated method stub
				System.out.println("学习汉语");

			}
		    
		}
	//球运动员
	class PingpPlayer extends Player{

		@Override
		class  programmer extends  employee{
			// TODO Auto-generated method stub
			System.out.println("学习打乒乓球");
			
		}
		 
	 }
	 //教练
	class BasketBallCocah extends Coach implements SpeakChinese{

		@Override
		public void teach() {
			// TODO Auto-generated method stub
			System.out.println("教扣篮");

		}

		@Override
		public void speak() {
			// TODO Auto-generated method stub
			System.out.println("学习汉语");

		}
	}
	class PingpCocah extends Coach implements SpeakChinese{

			@Override
			public void teach() {
				// TODO Auto-generated method stub
				System.out.println("教打乒乓球");

			}

			@Override
			public void speak() {
				// TODO Auto-generated method stub
				System.out.println("学习英语");
		
	}
	}
		




package day06;

public class Persontest {
	public static void main(String[] args) {
		BasketBallPlayer bb=new  BasketBallPlayer();
		bb.name ="gdfg";
		bb.age =20;
		bb.gender ='男';
		bb.printInfo();
		bb.eat();
		bb.speak();
		bb.study();
		
		PingpCocah cc=new PingpCocah();
		cc.name ="gdhdf";
		cc.age =20;
		cc.gender ='女';
		cc.printInfo();
		cc.eat();
		cc.speak();
		cc.teach();
		
	}
	
}

运行结果
在这里插入图片描述

三、抽象类

abstract:关键字,用于修饰方法和修饰类

抽象方法:不同类的方法是相似的,但是具体实现的内容不一样

所以我们只能抽取他的声明,没有具体的方法。

抽象类:有抽象方法的类就是抽象类

一个类继承了抽象类,需要重写抽象类中的抽象方法

注意事项;

1.抽象类只能放在抽象方法中

2.抽象类和抽象方法都是用abstract修饰的

3.抽象类不能被创建对象,(不能被实例化)

4.抽象类中可以有非抽象方法

5.抽象类和类的关系是继承关系

6.如果一个类继承了抽象类,要么就重写所有的抽象方法,要么就他本身设为抽象类

public class AbstractDemo2 {
	public static void main(String[] args){
		programmer p1=new programmer("XXX",20,"2016456789",3542.00);
		p1.printInfo();	
		p1.work();
		manager m1=new manager("XXX",25,"2009153456",5000.00,10000.00);
		m1.printInfo();
		m1.work();

	}
}

abstract class employees{
	String name;
	int age;
	String number;
	double money;
	public abstract void work();
	public void printInfo(){
		System.out.println("-----------");
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
		System.out.println("职位:程序员");
		System.out.println("工号:"+number);
		System.out.println("工资:"+money);
	}
}

class programmer extends employees{

	public programmer(String name,int age,String number,double money){
		this.name=name;
		this.age=age;
		this.number=number;
		this.money=money;		
	}
	
	@Override
	public void work() {
		// TODO Auto-generated method stub
		System.out.println("敲代码");		
	}
	
}

class manager  extends employees{
    double award;
    public manager(String name,int age,String number,double money,double award){
		this.name=name;
		this.age=age;
		this.number=number;
		this.money=money;
		this.award=award;

		
	}
    public void printInfo(){
		System.out.println("-----------");
		System.out.println("姓名:"+name);
		System.out.println("职位:项目经理");
		System.out.println("年龄:"+age);
		System.out.println("工号:"+number);
		System.out.println("工资:"+money+award);
	}
	@Override
	public void work() {
		// TODO Auto-generated method stub
		System.out.println("监督程序员敲代码");

		
	}
	
}


运行结果

在这里插入图片描述

package day06;

public class CHOUXIANG {
	
	/**
	 * 
	 * 抽象类:老师:
	 * 需求:
	 *   
	 *   基础班老师(BasicTeacher):姓名,年龄,授课;
	 *   框架班老师(FrameworkTeacher):姓名,年龄,授课; 
	 *   
	 *
	 * @author Administrator
	 *
	 */
	
		public static void main(String[] args){
			BasicTeacher a=new BasicTeacher("王老师",30);
			a.printInfo();
			FrameworkTeacher b=new FrameworkTeacher("高老师",35);
			b.printInfo();
			
		}
	}

	abstract class teacher{
		String name;
		int age;
		public abstract void work();
	    public void printInfo(){
			System.out.println("-----------");
			System.out.println("姓名:"+name);
			System.out.println("年龄:"+age);
		}
		
	}

	class BasicTeacher extends teacher{

		public BasicTeacher(String name,int age){
			this.name=name;
			this.age=age;
		}
		
		@Override
		public void work() {
			// TODO Auto-generated method stub
			System.out.println("基础知识");		
		}
		
	}

	class FrameworkTeacher  extends teacher{
	    public FrameworkTeacher(String name,int age){
			this.name=name;
			this.age=age;
		}
		@Override
		public void work() {
			// TODO Auto-generated method stub
			System.out.println("技术知识");

			
		}
		
	}

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值