··························
修饰符
访问控制修饰符成员时的访问权限去如下:
修饰符 本类 用一个包中的类 子类 其他类
public 可以访问 可以访问 可以访问 可以访问
protected 可以访问 可以访问 可以访问 可以访问
默认 可以访问 可以访问 可以访问 可以访问
private 可以访问 可以访问 可以访问 可以访问
`````````````````````
接口的实现
一个类可以实现多个接口,实现的接口用逗号分隔。
一个类可以通过implement关键字“实现接口”。
接口建存在继承关系,一个接口可以通过extends关键字继承另外一个接口。子接口继承了父类中定义的所有方法。
··········
接口的优点:
类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口,类与类之间是继承关系,Java的继承是单一继承,一个类中只能有一个父类,打破了继承的局限性、
对外提供规则(USB接口)
降低了程序的耦合性(可以实现模块化开发,定义好规则,每个人实现自己的模块,提高了开发的效率)
package cn.etdu.day2;
public class Person1 {
String name;
int age;
char gender;
//无参构造
public Person1(){
}
//有参构造
public Person1(String name,int age, char gender){
this.name = name;
this.age =age;
this.gender = gender;
}
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
public void printInfo(){
System.out.println("姓名:"+name+",性别:"+gender+",年龄:"+age);
}
}
//设计的接口
interface Speakchinese{
public abstract void speak();
}
abstract class Player extends Person1{
public abstract void study();
public void speak() {
// TODO Auto-generated method stub
}
}
abstract class Coach extends Person1{
public abstract void teach();
}
//篮球运动员
class BasketBall extends Player implements Speakchinese{
public void study(){
System.out.println("学习扣篮");
}
@Override
public void speak() {
// TODO Auto-generated method stub
System.out.println("学习汉语");
}
}
//乒乓球运动员
class Pinp extends Player{
@Override
public void study() {
// TODO Auto-generated method stub
System.out.println("学习杀球");
}
}
//篮球教练
class BasketBallCoach extends Coach implements Speakchinese{
@Override
public void teach() {
// TODO Auto-generated method stub
System.out.println("教扣篮");
}
public void speak(){
System.out.println("学汉语");
}
}
//乒乓球教练
class PinpCoach extends Coach{
@Override
public void teach() {
// TODO Auto-generated method stub
System.out.println("教杀球");
}}
抽象类:
* abstract:关键字,用于修饰方法和修饰类
*
* 抽象方法:不同类的方法是相识的,但具体实现的内容不一样;
* 所以我们只能抽取它的声明,没有具体的实现。
*
* 抽象类:有抽象方法的类就是抽象类
* 一个类继承了抽象类,需要重写抽象类中的抽象方法
*
*
*
*
* 抽象类的特点:
* 1、抽象方法只能放在抽象类中;
* 2、抽象类和抽象方法都是被abstract修饰的;
* 3、抽象类不能创建对象(不能被实例化);
* 4、抽象类中可以有非抽象方法;
* 5、抽象类和类的关系是继承关系;
* 6、如果一个类继承了抽象类,要么就重写所有的抽象方法,要么就它本身设置为抽象类;
*
package cn.etdu.day2;
/**
* 员工:
* 需求:
* 1、公司中
* 程序员(programmer):姓名、年龄、工号、工资、工作时间
* 项目经理( manager):姓名、年龄、工号、奖金、工资、工作时间
*/
public class Staff {
}
abstract class Emp{
String name;
int age;
int number;
int wages;
int bonus;
String time;
public abstract void work();
public void printInfo(){
System.out.println("姓名:"+name+",年龄:"+age+"工号"+number+"工资"+wages);
}
}
class programmer extends Emp{
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("敲代码");
}
}
class manager extends Emp{
double bonus;
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("监督敲代码");
}
}
abstract class th{
String name;
int age;
public abstract void sk();
public void printInfo(){
System.out.println("姓名;"+name+",年龄:"+age);
}
}
class jcth extends th{
@Override
public void sk() {
// TODO Auto-generated method stub
System.out.println("教导基础课程");
}
}
class kjth extends th{
@Override
public void sk() {
// TODO Auto-generated method stub
System.out.println("深入学习课程");
}
}