Java面向对象

Java面向对象的核心语法

1. 类和对象
  • 定义类

    java复制

    public class MyClass {
        // 成员变量
        private int id;
        private String name;
    
        // 构造方法
        public MyClass(int id, String name) {
            this.id = id;
            this.name = name;
        }
    
        // 成员方法
        public void display() {
            System.out.println("ID: " + id + ", Name: " + name);
        }
    
        // Getter 和 Setter 方法
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
  • 创建对象

    java复制

    MyClass obj = new MyClass(1, "Kimi");
    obj.display(); // 输出:ID: 1, Name: Kimi
2. 继承
  • 定义父类

    java复制

    public class Animal {
        protected String name;
    
        public Animal(String name) {
            this.name = name;
        }
    
        public void eat() {
            System.out.println(name + " is eating.");
        }
    }
  • 定义子类

    java复制

    public class Dog extends Animal {
        public Dog(String name) {
            super(name); // 调用父类构造方法
        }
    
        public void bark() {
            System.out.println(name + " is barking.");
        }
    }
  • 使用继承

    java复制

    Dog dog = new Dog("Tommy");
    dog.eat(); // 继承自父类的方法
    dog.bark(); // 子类特有的方法
3. 多态
  • 方法重写(Override)

    java复制

    public class Animal {
        public void makeSound() {
            System.out.println("Animal makes a sound.");
        }
    }
    
    public class Dog extends Animal {
        @Override
        public void makeSound() {
            System.out.println("Dog barks.");
        }
    }
    
    public class Cat extends Animal {
        @Override
        public void makeSound() {
            System.out.println("Cat meows.");
        }
    }
  • 多态的使用

    java复制

    Animal myDog = new Dog();
    myDog.makeSound(); // 输出:Dog barks.
    
    Animal myCat = new Cat();
    myCat.makeSound(); // 输出:Cat meows.
4. 接口
  • 定义接口

    java复制

    public interface Animal {
        void makeSound();
    }
  • 实现接口

    java复制

    public class Dog implements Animal {
        @Override
        public void makeSound() {
            System.out.println("Dog barks.");
        }
    }
    
    public class Cat implements Animal {
        @Override
        public void makeSound() {
            System.out.println("Cat meows.");
        }
    }
  • 使用接口

    java复制

    Animal myDog = new Dog();
    myDog.makeSound(); // 输出:Dog barks.
    
    Animal myCat = new Cat();
    myCat.makeSound(); // 输出:Cat meows.
5. 抽象类
  • 定义抽象类

    java复制

    public abstract class Animal {
        protected String name;
    
        public Animal(String name) {
            this.name = name;
        }
    
        public abstract void makeSound();
    }
  • 继承抽象类

    java复制

    public class Dog extends Animal {
        public Dog(String name) {
            super(name);
        }
    
        @Override
        public void makeSound() {
            System.out.println(name + " barks.");
        }
    }
  • 使用抽象类

    java复制

    Animal myDog = new Dog("Tommy");
    myDog.makeSound(); // 输出:Tommy barks.

Java泛型

泛型用于在编译时提供类型安全,避免类型转换的错误,同时增强代码的复用性。

1. 泛型类
  • 定义泛型类

    java复制

    public class Box<T> {
        private T content;
    
        public void setContent(T content) {
            this.content = content;
        }
    
        public T getContent() {
            return content;
        }
    }
  • 使用泛型类

    java复制

    Box<String> stringBox = new Box<>();
    stringBox.setContent("Hello");
    System.out.println(stringBox.getContent()); // 输出:Hello
    
    Box<Integer> intBox = new Box<>();
    intBox.setContent(123);
    System.out.println(intBox.getContent()); // 输出:123
2. 泛型方法
  • 定义泛型方法

    java复制

    public class Utility {
        public static <T> void printArray(T[] array) {
            for (T element : array) {
                System.out.print(element + " ");
            }
            System.out.println();
        }
    }
  • 使用泛型方法

    java复制

    String[] stringArray = {"Hello", "World"};
    Utility.printArray(stringArray); // 输出:Hello World
    
    Integer[] intArray = {1, 2, 3};
    Utility.printArray(intArray); // 输出:1 2 3
3. 泛型接口
  • 定义泛型接口

    java复制

    public interface Box<T> {
        void setContent(T content);
        T getContent();
    }
  • 实现泛型接口

    java复制

    public class StringBox implements Box<String> {
        private String content;
    
        @Override
        public void setContent(String content) {
            this.content = content;
        }
    
        @Override
        public String getContent() {
            return content;
        }
    }
  • 使用泛型接口

    java复制

    Box<String> stringBox = new StringBox();
    stringBox.setContent("Hello");
    System.out.println(stringBox.getContent()); // 输出:Hello
4. 泛型的类型限制
  • 定义有界泛型

    java复制

    public class Box<T extends Number> {
        private T content;
    
        public void setContent(T content) {
            this.content = content;
        }
    
        public T getContent() {
            return content;
        }
    }
  • 使用有界泛型

    java复制

    Box<Integer> intBox = new Box<>();
    intBox.setContent(123);
    System.out.println(intBox.getContent()); // 输出:123
    
    // Box<String> stringBox = new Box<>(); // 错误,String 不是 Number 的子类
5. 泛型的通配符
  • 无界通配符(?

    java复制

    public static void printBox(Box<?> box) {
        System.out.println(box.getContent());
    }
  • 有界通配符(? extends T

    java复制

    public static void printBox(Box<? extends Number> box) {
        System.out.println(box.getContent());
    }
  • 使用通配符

    java复制

    Box<Integer> intBox = new Box<>();
    intBox.setContent(123);
    printBox(intBox); // 输出:123
    
    // Box<String> stringBox = new Box<>();
    // printBox(stringBox); // 错误,String 不是 Number 的子类

总结

  • 面向对象:通过类和对象、继承、多态、接口和抽象类等特性,实现代码的模块化和复用性。

  • 泛型:通过类型参数化,增强代码的类型安全性和复用性,避免类型转换错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值