继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及 追加属性和方法 。
前言
继承的概念 :
继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及 追加属性和方法 。
继承带来的好处 :
继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员。
提示:以下是本篇文章正文内容,下面案例可供参考
一、修饰符是什么?
package(了解):
1、包的概念 包就是文件夹,用来管理类文件的
2、包的定义格式 package 包名; (多级包用.分开) 例如:package com.heima.demo;
3、带包编译&带包运行 带包编译:javac –d . 类名.java 例如:javac -d . com.heima.demo.HelloWorld.java 带包运行:java 包名+类名
例如:java com.heima.demo.HelloWorld
二、使用步骤
1.重写使用
下面新建三个类,分别是一个父类;两个子类。
父类代码如下(示例):
package com.xxgc.ch02_2.po;
//人类
public class Person {
//静态常量:值不可被改变
//静态使用情况:便于访问,数据共享。
public final String schoolName="济南信息工程学校";
private String name;
private int age;
//无参构造
public Person()
{
}
//有参构造
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
//吃饭
protected void eat() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
下面建两个子类,分别是Student类(学生类);Teacher类(老师类)。
学生类代码如下:
package com.xxgc.ch02_2.po;
public class Student extends Person{
public Student()
{
}
public Student(String name,int age)
{
super(name,age);
}
//重写父类的方法,方法名一样,参数列表也必须一样
public void eat()
{
System.out.println("学生吃肉");
}
public void study()
{
System.out.println(super.getName()+"学习");
}
}
下面我们建老师类
代码如下:
package com.xxgc.ch02_2.po;
//老师类
public class Teacher extends Person{
public Teacher()
{
}
public Teacher(String name,int age)
{
super(name,age);
}
public void eat()
{
System.out.println("老师吃烤鱼");
}
public void teach()
{
System.out.println(super.getName()+"教课");
}
}
重写:
不知道大家有没有发现上面三个类中,子类继承父类。但是有一个方法eat()却在三个类中都有,且命名也一样。这就是(重写)。
虽然子类继承了父类,但是如果有相同的方法,使用子类调用的话。默认调用的是子类的方法,此处举例说明:“假如说你有手机,你还会去借用别人的手机吗?”。
新建一个测试类,来判断上述是否有误。
测试类代码如下:
package com.xxgc.ch02_2.test;
import com.xxgc.ch02_2.po.Student;
import com.xxgc.ch02_2.po.Teacher;
public class PersonDemo {
public static void main(String[] args) {
//打印学校名称
Student stu=new Student();
stu.setName("扶苏");
stu.eat();
String school= stu.schoolName;
System.out.println(school);
Teacher t=new Teacher();
t.eat();
}
}
通过上面的测试类,经过运行代码。调用重写方法eat()方法,分别调用两个子类的eat()方法运行结果如下
运行结果证明上述说法无误,在子类中如果有重写方法,在子类中调用,调用的是子类本身的方法,而不是调用的父类。
2.import(理解)
import(理解):
导包的意义 使用不同包下的类时,使用的时候要写类的全路径,写起来太麻烦了 为了简化带包的操作,Java就提供了导包的功能 导包的格式
格式:import 包名;
范例:import java.util.Scanner;
示例代码(没有使用导包,创建的Scanner对象)
package com.heima; import java.util.Scanner; public class Demo {
public static void main(String[] args) {
// 1. 没有导包,创建Scnaner对象
Scanner sc = new Scanner(System.in);
}
}
1. fifinal(应用)
fifianl关键字的作用
- fifinal代表最终的意思,可以修饰成员方法,成员变量,类
- fifinal修饰类、方法、变量的效果
- fifianl修饰类:该类不能被继承(不能有子类,但是可以有父类)
- fifinal修饰方法:该方法不能被重写
- fifinal修饰变量:表明该变量是一个常量,不能再次赋值
2.fifinal修饰局部变量(理解)
fifianl修饰基本数据类型变量 :
- fifinal 修饰指的是基本类型的数据值不能发生改变
- fifinal修饰引用数据类型变量
- ifinal 修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的
举例:
public static void main(String[] args){
final Student s = new Student(23);
s = new Student(24);
// 错误 s.setAge(24); // 正确
}
3.static(应用):
- static的概念
- static关键字是静态的意思,可以修饰【成员方法】,【成员变量】
- static修饰的特点
- 1. 被类的所有对象共享,这也是我们判断是否使用静态关键字的条件
- 2. 可以通过类名调用当然,也可以通过对象名调用【推荐使用类名调用】
代码如下:
class Student {
public String name; //姓名
public int age; //年龄
public static String university; //学校 共享数据!所以设计为静态!
public void show() {
System.out.println(name + "," + age + "," + university); }
}
public class StaticDemo {
public static void main(String[] args) {
// 为对象的共享数据赋值
Student.university = "传智大学";
Student s1 = new Student();
s1.name = "林青霞";
s1.age = 30;
s1.show();
Student s2 = new Student();
s2.name = "风清扬";
s2.age = 33; s2.show();
}
}
4.static访问特点(掌握)
- static的访问特点
- 非静态的成员方法
- 能访问静态的成员变量
- 能访问非静态的成员变量
- 能访问静态的成员方法
- 能访问非静态的成员方法
- 静态的成员方法
- 能访问静态的成员变量
- 能访问静态的成员方法
- 总结成一句话就是:
- 静态成员方法只能访问静态成员
总结
这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了Java修饰符使用,而Java提供了大量能使我们快速便捷地方法。