🎨 个人介绍
👉大家好,我是:知识的搬运工旺仔
👉认真分享技术,记录学习过程的点滴,如果我的分享能为你带来帮助,请支持我奥🍻
👉你的支持,是我每天更新的动力。
👉赞点:👍 留言:✍ 收藏:⭐
👉个人格言:想法一步一步的落实,才是你我前进最佳选择。
1 )继承的概念
2 )实现继承的格式
继承通过extends实现
格式:
3 )继承带来的好处
4 )实例代码
public class Fu {
public void show() {
System.out.rpintln("show方法被调用");
}
}
public class Zi entends Fu {
public void method() {
System.out.println("method方法被调用");
}
}
public class Demo {
public static void main(String[] args) {
// 创建对象,调用方法
Fu f = new Fu();
f.show();
Zi z = new Zi();
z.method();
z.show();
}
}
1 )继承好处
2 )继承弊端
3 )继承的应用场景:
使用继承,需要考虑类与类之间是否存在is…a的关系,不能盲目使用
1 )在子类方法中访问一个变量,采用的就是就近原则
2 )实例代码
class Fu {
int num =10;
}
class Zi {
int num =20;
public void show() {
int num =30;
System.out.println(num);
}
}
public class Demo1 {
public static void main(String[] args) {
Zi z = new Zi();
z.show(); //输出show方法中的局部变量30
}
}
1 )this & super 关键字
2 )this 和 super 的使用分别
成员变量:
成员方法:
构造方法
1 )注意
2 )问题:如果父类中没有无参构造方法,只有带参构造方法,该怎么办
3 )推荐方法
1 )通过子类对象访问一个方法
对象在堆内存中,会单独存在一块super区域,用来存放父类的数据
1 )方法重写概念
2 )方法重写的应用场景
3 )Override注释
1 )方法重写的注意事项
2 )实例代码
public class Fu {
private void show() {
System.out.println("FU中show方法被调用");
}
void method() {
System.out,println("FU中method()方法被调用")
}
}
public class Zi extends Fu {
//编译出错,子类不能重写父类的方法
@Override
private void show() {
System.out.println("Zi中show()方法被调用")
}
//编译出错,子类重写父类方法的时候,访问权限需要大于等于父类
@Override
private void method() {
System.out.println("Zi中method()方法被调用");
}
//编译通过,子类重写父类方法的时候,访问权限需要大于等于父类
@Override
public void method() {
System.out.println("Zi中method()方法被调用" );
}
}
1 )Java中继承的注意事项
Java中类只支持单继承,不支持多继承
Java中类支持多层继承
2 )多层继承实例代码
public class Granddad {
public void drink() {
System.out.printl("爷爷爱喝酒");
}
}
public class Father extends Granddad {
public void smoke() {
System.out.println("爸爸爱抽烟");
}
}
public class Mother {
public void dance() {
System.out.println("妈妈爱跳舞");
}
}
public class Son extends Father {
// 此时,Son类中就同时拥有drunk 以及 smoke 方法
}
class Person {
private int age;
private String name;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
class Teacher extends Person {
public Teacher() {}
public Teacher (String name, int age) {
super(name,age);
}
public void teach() {
System.out.println("用爱成就每一位学员");
}
}
class Student extends Person {
public Student(String name, int age) {
super(name,age);
}
public void study() {
System.out.ptintln("学生学习");
}
}
class PersonDemo {
public static void main(String[] args) {
// 创建老师类对象并进行测试
Teacher t1 = new Teacher();
t1.setName("林青霞");
t1.setAge(30);
System.out.println(t1.getName() + "," + t1.getAge());
t1.teach();
Teacher t2 = new Teacher("风清扬",33);
System.out.println(t2.getName() + "," + t2.getAge());
t2.teach();
//创建学生对象测试
Student s = new Student("张三",223);
System.out.println(s.println(s.getName() + "," + s.getAge()))
s.study();
}
}
猫
狗
共性:
定义动物类(Animal)
定义猫类(cat),继承动物类
定义狗类(Dog),继承动物类
class Animal {
private String name;
private int age;
public Animal() {}
public Animal (String name,int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge(int age) {
this.age = age;
}
}
class Cat extends Animal {
public Cat() {}
public Cat(String name,int age) {
super(name,age);
}
public void catchMouse() {
System.out.println("猫抓老鼠");
}
}
class Dog extends Animal {
public Dog() {}
public Dog(String name, int age) {
super(name,age);
}
public void lookDoor() {
System.out.println("狗看门");
}
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args) {
//创建猫类并进行测试
Cat c1 = new Cat();
c1.setName("加菲猫");
c1.setAge(5);
System.out.println(c1.getName() + "," + c1.getAge());
c1.catchMouse();
Cat c2 = new Cat("加菲猫",5);
System.out.println(c2.getName() + "," + c2.getAge());
c2.catchMouse();
}
}
1 )包的概念
2 )包的定义格式
3 )带包编译 & 带包运行
带包编译:javac -d .类名.java
带包运行:java 包名+类名
1 )导包的意义
2 )导包的格式
3 )实例代码 (没有导包的实例)
package com.heima;
public class Demo {
public static void main(String[] args) {
java.util.Scaner input = new java.util.Scanner(system.in);
}
}
4 )实例代码 (使用导包后,创建Scanner)
package com.heima
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner input = new Scaner();
}
}
修饰符 | 同一个类中 | 同一个包中子类无关类 | 不同包的子类 | 不同包的无关类 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
1 )final关键字的作用
2 )final 修饰类、方法、变量的效果
1 )fianl 修饰基本数据类型变量
2 )final 修饰引用数据类型变量
public static void main(String[] args) {
final Student s = new Student(23);
s = new Student(24); // 错误
s.setAGe(24); // 正确
}
1 )static 的概念
2 )static 修饰的特点
3 )实例代码
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();
}
}
1 )static 的访问特点
非静态的成员方法
静态的成员方法
总结成一句话
🎈看完了不妨给我点个赞吧,👉你的支持,是我每天更新的动力…