1. 抽象类和接口
抽象类示例
abstract class Animal {
abstract void makeSound();
void sleep() {
System.out.println("Sleeping...");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
}
public class AbstractClassExample {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound();
dog.sleep();
}
}
接口示例
interface Drawable {
void draw();
}
class Circle implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
public class InterfaceExample {
public static void main(String[] args) {
Drawable circle = new Circle();
circle.draw();
}
}
2. 内部类
成员内部类示例
class OuterClass {
private int outerField = 10;
class InnerClass {
void display() {
System.out.println("Outer field value: " + outerField);
}
}
}
public class MemberInnerClassExample {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.display();
}
}
静态内部类示例
class OuterClass {
private static int outerStaticField = 20;
static class StaticInnerClass {
void display() {
System.out.println("Outer static field value: " + outerStaticField);
}
}
}
public class StaticInnerClassExample {
public static void main(String[] args) {
OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
inner.display();
}
}
3. 枚举
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.WEDNESDAY;
System.out.println("Today is: " + today);
}
}
4. 泛型
泛型类示例
class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
public class GenericClassExample {
public static void main(String[] args) {
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello, Generics!");
System.out.println(stringBox.getContent());
Box<Integer> integerBox = new Box<>();
integerBox.setContent(123);
System.out.println(integerBox.getContent());
}
}
泛型方法示例
public class GenericMethodExample {
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.print(element + " ");
}
System.out.println();
}
public static void main(String[] args) {
Integer[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"Hello", "World"};
printArray(intArray);
printArray(stringArray);
}
}
5. 注解
自定义注解示例
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
String value() default "Default Value";
}
class MyClass {
@MyAnnotation("Custom Value")
public void myMethod() {
System.out.println("Method with custom annotation");
}
}
public class AnnotationExample {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
MyAnnotation annotation = obj.getClass().getMethod("myMethod").getAnnotation(MyAnnotation.class);
System.out.println("Annotation value: " + annotation.value());
}
}
6. 反射
import java.lang.reflect.Method;
class MyClass {
public void myMethod() {
System.out.println("Inside myMethod");
}
}
public class ReflectionExample {
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("MyClass");
Object obj = clazz.getDeclaredConstructor().newInstance();
Method method = clazz.getMethod("myMethod");
method.invoke(obj);
}
}
7. 代理
动态代理示例
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
interface Hello {
void sayHello();
}
class HelloImpl implements Hello {
@Override
public void sayHello() {
System.out.println("Hello, World!");
}
}
class MyInvocationHandler implements InvocationHandler {
private Object target;
public MyInvocationHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Before method call");
Object result = method.invoke(target, args);
System.out.println("After method call");
return result;
}
}
public class DynamicProxyExample {
public static void main(String[] args) {
HelloImpl helloImpl = new HelloImpl();
MyInvocationHandler handler = new MyInvocationHandler(helloImpl);
Hello proxyHello = (Hello) Proxy.newProxyInstance(
HelloImpl.class.getClassLoader(),
new Class<?>[] { Hello.class },
handler
);
proxyHello.sayHello();
}
}
8. 序列化
import java.io.*;
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class SerializationExample {
public static void main(String[] args) {
Person person = new Person("John Doe", 30);
// Serialization
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
oos.writeObject(person);
System.out.println("Person object serialized");
} catch (IOException e) {
e.printStackTrace();
}
// Deserialization
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
Person deserializedPerson = (Person) ois.readObject();
System.out.println("Person object deserialized: " + deserializedPerson);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
9. 并发编程
线程示例
class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread is running");
}
}
public class ThreadExample {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
线程池示例
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class Task implements Runnable {
@Override
public void run() {
System.out.println("Task is running");
}
}
public class ThreadPoolExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
executor.execute(new Task());
}
executor.shutdown();
}
}
10. 函数式编程
Lambda表达式示例
interface MathOperation {
int operate(int a, int b);
}
public class LambdaExample {
public static void main(String[] args) {
MathOperation addition = (a, b) -> a + b;
System.out.println("10 + 5 = " + addition.operate(10, 5));
MathOperation subtraction = (a, b) -> a - b;
System.out.println("10 - 5 = " + subtraction.operate(10, 5));
}
}
Stream API示例
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");
List<String> filteredNames = names.stream()
.filter(name -> name.length() > 3)
.collect(Collectors.toList());
System.out.println(filteredNames);
}
}
11. 模块系统
// module-info.java
module com.example.mymodule {
requires java.base;
exports com.example.mymodule;
}
// com/example/mymodule/MyClass.java
package com.example.mymodule;
public class MyClass {
public void sayHello() {
System.out.println("Hello from MyClass");
}
}
// com/example/Main.java
package com.example;
import com.example.mymodule.MyClass;
public class Main {
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.sayHello();
}
}
12. 设计模式
单例模式示例
class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
public class SingletonExample {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
System.out.println(singleton);
}
}
工厂模式示例
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("Drawing a square");
}
}
class ShapeFactory {
public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
public class FactoryExample {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
Shape shape1 = shapeFactory.getShape("CIRCLE");
shape1.draw();
Shape shape2 = shapeFactory.getShape("SQUARE");
shape2.draw();
}
}
这些示例代码涵盖了Java面向对象编程的多个进阶主题。
标签:java,进阶,void,System,public,面向对象,println,class,out From: https://blog.csdn.net/weixin_74196912/article/details/140570204