继承:发现一些类中的属性和方法是相同的,所以把这些相同的属性和方法提取到一个新的类中,然后利用ectends关键字来让原来的类和新的类产生联系,这种联系称之为继承。
通过extends关键字可以实现类的继承;
子类可以继承父类的成员变量及成员方法,同时也可以定义自己的成员变量和成员方法;
Java语言不支持多重继承,一个类只能继承一个父类,但一个父类可以有多个子类。
重载与重写完全不同的语法现象,区别如下:
1.重载是指在一个类中定义多个方法名相同但参数列表不同的方法,在编译时,根据参数的个数和类型来决定绑定哪个方法。
2.重写是指在类中定义和父类完全相同的方法,在程序运行时,根据对象类型的不同(而不是引用类型),而调用不同的版本。
package day6;
/**
* 学生类:
* private的使用
* @author Administrator
* 通过对象直接访问成员变量,这样操作,会引起数据安全问题:
* 考虑:能不能不让外界直接访问对象的成员变量???
* 使用private解决:
* private:
* 是一个修饰符:
* 可以修饰成员变量,也可以修饰成员方法;
* 被private修饰的成员只能在本类中被访问;
* 提供相应的getXxxx()和setXxxxx()方法用于获取和设置成员变量的值
* 方法用public修饰
*
*/
public class OperatorDemo40 {
//成员变量
String name;
//int age;
private int age;
public int getAge(){
return age;
}
public void getAge(int age){
this.age = age;
}
public void setAge(int age){
if(age < 0 || age > 150){
System.out.println("年龄不合法");
}
}
//成员方法
public void printInfo(){
System.out.println("姓名:"+ name+",年龄"+age);
}
}
package day6;
public class OperatorDemo41 {
public static void main(String[] args) {
OperatorDemo40 s = new OperatorDemo40();
s.name = "张无忌";
//s.age = 20;
s.setAge(22);
s.printInfo();
s.setAge(999);
s.printInfo();
s.setAge(-123);
s.printInfo();
}
}
package day6;
/**
* NBA篮球运动员和教练
* 兵乓球运动员和教练
* 现在NBA篮球运动员和教练要来中国访问学习,学习汉语;
* 根据所学的知识,分析出类,继承,接口:
* 分析:
* 、由下而上,向下抽取的过程:
* 写
* 由上而下
* @author Administrator
*
*/
public class OperatorDemo44 {
}
package day6;
public class OperatorDemo45 {
String name;
int age;
char gender;
public void eat(){
System.out.println();
}
public void sleep(){
System.out.println();
}
interface SpeakChinese{
public abstract void speak();
}
abstract class Player extends OperatorDemo45{
public abstract void study();
}
abstract class Coach extends OperatorDemo45{
public abstract void teach();
}
//篮球运动员
class BasketBall extends Player{
public void study(){
System.out.println("学习扣篮");
}
}
//兵乓球运动员
class Pinp extends Player{
public void study(){
System.out.println("学习打乒乓球");
}
}
//篮球教练
class BasketBall extends Player{
public void study(){
System.out.println("教扣篮");
}
}
class BasketBall extends Co{
public void study(){
System.out.println("教扣篮");
}
}
package day6;
/**
* 抽象类的特点:
* 1.抽象方法只能放在抽象类中;
* 2.抽象类和抽象方法都是被abstract修饰的;
* 3.抽象类不能创建对象(不能被实列化);
* 4.抽象类中可以有非抽象方法的
* 5.抽象类和类关系是继承关系;
* 6.如果一个类继承了抽象类,要么就重写所有的抽象方法;
* 要么就它本身设置为抽象类
*
* 雇员:
* 需求:
* 1.公司中
* 程序员(Programmer):姓名,年龄,工号,工资,工作;
* 项目经理(Manager):姓名,年龄,工号,工资,奖金,工作;
*
* @author Administrator
*
*/
public class OperatorDemo48 {
}
abstract class Emp{
String name;
int age;
String id;
double salary;
public abstract void work();
class Programmer extends Emp{
public void work(){
System.out.println("敲代码。");
}
}
class Manager extends Emp{
double bonus;
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("监督敲代码。");
}
}
}