java基础笔记三(静态、继承与多态、抽象类、接口、权限修饰符、枚举、final关键字、Object&Math&Date&包装类等常见类、Collection集合、Map集合)

本文详细介绍了Java编程中的面向对象特性,包括static关键字、继承、多态、抽象类和接口的使用。讲解了如何利用这些特性进行代码优化和设计,如模板设计模式和单例设计模式。此外,还深入探讨了权限修饰符、枚举、内部类、Object类、Date类、Math类和包装类的相关知识。文章最后阐述了集合框架,特别是List和Set集合的实现及操作,包括ArrayList、LinkedList、HashSet、TreeSet等,并讲解了泛型、迭代器和比较器的概念及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • static关键字
  • 面向对象三特性之继承
  • 面向对象三特性之多态
  • 抽象类
  • 接口
  • 权限修饰符
  • 枚举类
  • 模板设计模式与单例设计模式
  • final关键字
  • 内部类,
  • Object,Date, Math,BigDecimal,包装类,
  • 集合Collection(list与set)
  • 集合Map

1.1 static关键字(解决对象之间相互冗余的属性和方法)

​ 在前面面向对象的学习中,知道一个类包含成员变量和成员方法,比如定义一个学生类,其具有的成员变量有 姓名,年龄,成员方法有学习等

​ 在一个类中,我们通常用static关键字来区分成员变量和成员方法对于每一个实例对象的归属问题。想上面所述,可能定义的学生类具有像校名、班级名等成员变量,不像姓名年龄这种,这对于同一个学校、同一个班级学生的学生对象来说是一模一样的,像这种对象一模一样的属性或行为我们用static来修饰,该成员变量或成员方法属于该类,并不会像其他成员变量一样在程序运行时会每个对象复制一份到堆内存,而它只会保留在方法区的静态区中,在内存中只有这一份。

1.1.1 static修饰成员变量

​ 格式:static 数据类型 变量名

​ 调用:类名.成员变量名 (因为数据类,不属于对象,因此用类名来调)

public class Demo {
   
    public static void main(String[]args){
   
        Student.schoolName="合肥工业大学";
        Student s1 =new Student();
        Student s2=new Student();
        System.out.println(Student.schoolName);
        System.out.println(Student.schoolName);
    }
}
class Student{
   
     String name;
     int age;
     static String schoolName;//static 修饰成员变量
    //get/set方法;
    //成员方法;
}

1.1.2 static 修饰成员方法

​ 格式:修饰符 static 返回值类型 方法名(参数列表){}

​ 调用:类名调用,类名.方法名

​ 同一类中,静态方法只能使用静态内容(静态成员变量和静态成员方法),静态方法中出线非静态成员变量或者成员方法会报错。

public static void main(String[]args){
   
        Student.setSchoolName("合肥工业大学");
        Student s1 = new Student("tom",24);
        Student s2 = new Student("jerry",23);
        System.out.println(s1.getName()+","+s1.getAge()+","+Student.getSchoolName());
        System.out.println(s2.getName()+","+s2.getAge()+","+Student.getSchoolName());
        s1.eat();
        Student.study();
    }
}
class Student{
   
      private String name;
      private int  age;
       private static String schoolName;//static 修饰成员变量
     //get/set方法;

    public Student() {
   
    }

    public Student(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;
    }

    public static String getSchoolName() {
   
        return schoolName;
    }

    public static void setSchoolName(String schoolName) {
   
        Student.schoolName = schoolName;
    }
    //成员方法;
    public  void eat(){
   
        System.out.println(getName()+" "+getAge()+" "+getSchoolName());
    }
    public static void study(){
   
        System.out.println(getSchoolName());
    }

1.2 继承(解决多个类之间相互冗余的成员变量和方法)

1.2.1 继承概念,格式

​ 概念:在Java语言中,由于多个类中的成员变量和成员方法相同,会造成代码的冗余,我们可以将这些相同属性和行为抽取出来,单独放到一个类中,其他类无需再定义这些成员变量和方法,只需继承那一个类即可,这个类就是父类。

​ 继承格式:关键词 extends

​ 父类:修饰词 class 父类名{

​ }

​ 子类:修饰词 class 子类名 extends 父类名{

​ }

​ 继承可以提高代码的复用性,并且使类与类之间产生联系。

public class Demo {
   
    public static void main(String[]args){
   
        Student s=new Student("张三",18,80.5);
        s.eat();
        s.study();
        Teacher t=new Teacher("李老师",35,4000.0);
        t.eat();
        t.teaching();
    }
}
//父类
public class Person {
   
    //要想被子类继承这里就不用private来修饰成员变量和成员方法
   String name;
   int age;
    public Person() {
   
    }
    public Person(String name, int age) {
   
        this.name = name;
        this.age = age;
    }
    public void eat(){
   
        System.out.println(name+","+age+","+"在吃饭");
    }
}
//子类
public class Teacher extends Person {
   
    private  double salary;

    public Teacher() {
   

    }
	public Teacher(String name, int age, double salary) {
   
        super(name, age);
        this.salary = salary;
    }

    public double getSalary() {
   
        return salary;
    }

    public void setSalary(double salary) {
   
        this.salary = salary;
    }
    public void teaching(){
   
        System.out.println(name+","+age+","+"上课工资为:"+salary);
    }
}
//子类
public class Student extends Person {
   
    private double score;
	 public Student() {
   

    }

    public Student(String name, int age, double score) {
   
        super(name, age);
        this.score = score;
    }

    public double getScore() {
   
        return score;
    }

    public void setScore(double score) {
   
        this.score = score;
    }

    public  void study(){
   
        System.out.println(name+","+age+","+"考试分数为"+score);
    }
}
1.2.2 继承的内容

​ 并不是父类中所有内容都会继承到子类,父类中的构造方法不会被子类继承(构造方法的方法名要和类名一致),还有父类中被private修饰的成员变量不能直接被子类访问,要通过提供get/set方法来访问。

public class Demo {
   
    public static void main(String[]args){
   
        Student s=new Student("张三",18,80.5);
        s.eat();
       // s.smokable;父类私有的方法不能被调用
        s.study();

        Teacher t=new Teacher("李老师",35,4000.0);
        t.eat();
        //t.smokable;父类私有的方法不能被调用
        t.teaching();
    }

}
public class Person {
   
    //这里用private来修饰父类成员变量,要想成员变量能够访问这些成员变量,在下面就要提供get/set方法
   private  String name;
   private int age;
    public Person() {
   
    }
    public Person(String name, int age) {
   
        this.name = name;
        this.age = age;
    }

    public</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶摇直上zzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值