static定义method、property、class的用法,及注意事项2

本文深入探讨Java中static关键字的应用,特别是在方法定义中的作用。通过具体示例,展示如何使用static方法在不实例化对象的情况下调用,以及其在抽象模板类中的应用。同时,文章还解释了静态变量的概念和使用场景。
package net.csdn.staticsmethod;

//这个类用来测试static关键字定义方法的用法
public class CaseTninetyThree {
	public static void main(String[] args) {
//		System.out.println(Brave.pub);
		//创建普通方法,如果用static关键字修饰该普通方法,那么,可以由抽象模板类在没有实例化对象产生的情况下直接调用
		Brave.setPub("小彦舜出版社");  
		
		System.out.println();  //换行
		
		//实例化抽象模板类Brave的对象
		Brave b = new Brave("Java开发", 123.4);
		Brave br = new Brave("MySQL开发", 123.4);
		Brave bra = new Brave("Web开发", 123.4);
		System.out.println("我精通Java开发,MySQL开发,Web开发,立志成为架构师。");
		
		/**	Brave b = new Brave("Java开发", 123.4);
			Brave br = new Brave("MySQL开发", 123.4);
			Brave bra = new Brave("Web开发", 123.4);
		 	
		 	等同于:
		 	
			System.out.println(b.getInfo());
			System.out.println(br.getInfo());
			System.out.println(bra.getInfo());*/
		
		System.out.println();  //换行
		
		System.out.println(b.getInfo());
		System.out.println(br.getInfo());
		System.out.println(bra.getInfo());
		
		System.out.println();  //换行
		System.out.println("以上,就是获取封装的两种方式,以及static定义方法的知识");
	}
}

//创建抽象模板类
class Brave{
	private String title;
	private double price;
	//声明一个static修饰的变量
//	static String pub = "彦舜出版社";
	private static String pub = "彦舜出版社";
	
	//创建构造方法:有构造方法不一定有对象,有对象必有对应的构造方法。那我们在这先创建构造方法,没必要先创建对象,那么被动
	public Brave(String title, double price) {
		this.title = title;
		this.price = price;
		System.out.println("图书名称:"+this.title+";价格:"+this.price+",出版社:"+this.pub);
	}
	
	//创建普通方法,如果用static关键字修饰该普通方法,那么,可以由抽象模板类在没有实例化对象产生的情况下直接调用
//	public void setPub(String s) {
	public static void setPub(String s) {
		pub = s;
		System.out.println(pub);
		System.out.println("彦舜出版社,变成了,"+pub);
	}
	
	//跳过构造方法,以此方法获取封装属性,同时省略并也可通过setter/getter方法发挥同样的作用
	public String getInfo() {
		System.out.println("对比上述构造方法,获取程序封装信息的方式");
		return "图书名称:"+title+";价格:"+price+",出版社:"+pub;
	}
}

彦舜,绝对原创

### def 含义:`def` 是 Python 中用于定义函数的关键字,用于创建一个可重复使用的代码块。 示例: ```python def add_numbers(a, b): return a + b result = add_numbers(3, 5) print(result) ``` 示例解释:使用 `def` 关键字定义了一个名为 `add_numbers` 的函数,该函数接受两个参数 `a` 和 `b`,并返回它们的和。调用该函数并传入参数 3 和 5,将结果存储在 `result` 变量中并打印。 ### return 含义:`return` 用于从函数中返回一个值,并终止函数的执行。 示例: ```python def multiply_numbers(a, b): return a * b product = multiply_numbers(4, 6) print(product) ``` 示例解释:在 `multiply_numbers` 函数中,使用 `return` 语句返回 `a` 和 `b` 的乘积。调用函数并将返回值存储在 `product` 变量中并打印。 ### lambda 含义:`lambda` 用于创建匿名函数,即没有名称的小型函数,通常用于简单的操作。 示例: ```python add = lambda x, y: x + y result = add(2, 7) print(result) ``` 示例解释:使用 `lambda` 关键字创建了一个匿名函数,该函数接受两个参数 `x` 和 `y` 并返回它们的和。将该函数赋值给变量 `add`,调用 `add` 函数并传入参数 2 和 7,将结果存储在 `result` 变量中并打印。 ### argument 含义:参数(argument)是在调用函数时传递给函数的值。 示例: ```python def greet(name): print(f"Hello, {name}!") greet("Alice") ``` 示例解释:在调用 `greet` 函数时,传递了参数 `"Alice"` 给函数。 ### parameter 含义:参数(parameter)是函数定义中指定的变量,用于接收调用函数时传递的参数值。 示例: ```python def print_info(age, city): print(f"Age: {age}, City: {city}") print_info(25, "New York") ``` 示例解释:在 `print_info` 函数的定义中,`age` 和 `city` 是参数,用于接收调用函数时传递的实际参数值。 ### default argument 含义:默认参数(default argument)是在函数定义时为参数指定的默认值,如果调用函数时没有提供该参数的值,则使用默认值。 示例: ```python def say_hello(name="Guest"): print(f"Hello, {name}!") say_hello() say_hello("Bob") ``` 示例解释:在 `say_hello` 函数的定义中,`name` 参数有默认值 `"Guest"`。第一次调用函数时没有提供参数,使用默认值;第二次调用时提供了参数 `"Bob"`,使用提供的值。 ### *args 含义:`*args` 用于在函数定义中接收任意数量的非关键字参数,这些参数会被打包成一个元组。 示例: ```python def sum_numbers(*args): total = 0 for num in args: total += num return total result = sum_numbers(1, 2, 3, 4) print(result) ``` 示例解释:在 `sum_numbers` 函数的定义中,`*args` 接收了多个参数,并将它们打包成一个元组。在函数内部,遍历这个元组并计算所有元素的和。 ### **kwargs 含义:`**kwargs` 用于在函数定义中接收任意数量的关键字参数,这些参数会被打包成一个字典。 示例: ```python def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Alice", age=25, city="New York") ``` 示例解释:在 `print_info` 函数的定义中,`**kwargs` 接收了多个关键字参数,并将它们打包成一个字典。在函数内部,遍历这个字典并打印键值对。 ### recursion 含义:递归是指函数调用自身的编程技巧,通常用于解决可以分解为相同子问题的问题。 示例: ```python def factorial(n): if n == 0 or n == 1: return 1 else: return n * factorial(n - 1) result = factorial(5) print(result) ``` 示例解释:`factorial` 函数是一个递归函数,用于计算一个数的阶乘。当 `n` 为 0 或 1 时,返回 1;否则,返回 `n` 乘以 `factorial(n - 1)` 的结果。 ### generator 含义:生成器是一种特殊的迭代器,使用 `yield` 关键字来生成值。生成器可以逐个产生值,而不是一次性生成所有值,节省内存。 示例: ```python def number_generator(): num = 0 while num < 5: yield num num += 1 gen = number_generator() for num in gen: print(num) ``` 示例解释:`number_generator` 是一个生成器函数,使用 `yield` 关键字生成值。在循环中调用生成器,每次调用时生成一个新的值。 ### decorator 含义:装饰器是一种特殊的函数,用于修改其他函数的行为,通常用于添加额外的功能,如日志记录、性能测试等。 示例: ```python def log_decorator(func): def wrapper(): print(f"Calling function {func.__name__}") func() print(f"Function {func.__name__} has been called.") return wrapper @log_decorator def say_hi(): print("Hi!") say_hi() ``` 示例解释:定义了一个名为 `log_decorator` 的装饰器函数,它接受一个函数作为参数,并返回一个新的函数 `wrapper`。使用 `@log_decorator` 语法将 `say_hi` 函数装饰,调用 `say_hi` 函数时会执行装饰器的额外功能。 ### closure 含义:闭包是指一个函数可以访问并使用其外部函数作用域中的变量,即使外部函数已经执行完毕。 示例: ```python def outer_function(x): def inner_function(y): return x + y return inner_function closure = outer_function(10) result = closure(5) print(result) ``` 示例解释:`outer_function` 函数返回了 `inner_function`,`inner_function` 可以访问 `outer_function` 中的变量 `x`。调用 `outer_function(10)` 返回一个闭包,调用该闭包并传入参数 5,计算结果并打印。 ### function 含义:函数是一段可重复使用的代码块,用于执行特定的任务。 示例: ```python def square_number(num): return num ** 2 result = square_number(4) print(result) ``` 示例解释:定义了一个名为 `square_number` 的函数,用于计算一个数的平方。调用该函数并传入参数 4,将结果存储在 `result` 变量中并打印。 ### class 含义:`class` 是 Python 中用于创建对象的蓝图,定义了对象的属性和方法。 示例: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def introduce(self): print(f"My name is {self.name} and I'm {self.age} years old.") person = Person("John", 30) person.introduce() ``` 示例解释:使用 `class` 关键字定义了一个名为 `Person` 的类,该类有一个构造函数 `__init__` 用于初始化对象的属性,还有一个 `introduce` 方法用于打印对象的信息。创建一个 `Person` 类的实例并调用 `introduce` 方法。 ### object 含义:对象是类的实例,是根据类创建的具体实体。 示例: ```python class Dog: def bark(self): print("Woof!") dog = Dog() dog.bark() ``` 示例解释:创建了一个 `Dog` 类的对象 `dog`,并调用了该对象的 `bark` 方法。 ### instance 含义:实例和对象意思相近,指的是根据类创建的具体个体。 示例: ```python class Circle: def __init__(self, radius): self.radius = radius def area(self): return 3.14 * self.radius ** 2 circle_instance = Circle(5) print(circle_instance.area()) ``` 示例解释:创建了一个 `Circle` 类的实例 `circle_instance`,并调用了该实例的 `area` 方法计算面积。 ### attribute 含义:属性是类或对象的变量,用于存储数据。 示例: ```python class Car: def __init__(self, make, model): self.make = make self.model = model car = Car("Toyota", "Corolla") print(car.make) ``` 示例解释:在 `Car` 类的构造函数中,定义了两个属性 `make` 和 `model`。创建 `Car` 类的实例并访问其 `make` 属性。 ### method 含义:方法是类中定义的函数,用于执行与类相关的操作。 示例: ```python class Rectangle: def __init__(self, length, width): self.length = length self.width = width def area(self): return self.length * self.width rect = Rectangle(4, 6) print(rect.area()) ``` 示例解释:在 `Rectangle` 类中定义了一个 `area` 方法,用于计算矩形的面积。创建 `Rectangle` 类的实例并调用 `area` 方法。 ### __init__ 含义:`__init__` 是 Python 类中的特殊方法,也称为构造函数,用于在创建对象时初始化对象的属性。 示例: ```python class Book: def __init__(self, title, author): self.title = title self.author = author def display_info(self): print(f"Title: {self.title}, Author: {self.author}") book = Book("Python Crash Course", "Eric Matthes") book.display_info() ``` 示例解释:在 `Book` 类中定义了 `__init__` 方法,在创建 `Book` 类的实例时,传入 `title` 和 `author` 参数,初始化对象的属性。调用 `display_info` 方法打印书籍信息。 ### self 含义:`self` 是 Python 类中方法的第一个参数,代表类的实例本身,用于访问实例的属性和方法。 示例: ```python class Student: def __init__(self, name): self.name = name def greet(self): print(f"Hello, my name is {self.name}.") student = Student("Emma") student.greet() ``` 示例解释:在 `Student` 类的方法中,使用 `self` 来引用实例的属性 `name`。创建 `Student` 类的实例并调用 `greet` 方法。 ### inheritance 含义:继承是一种面向对象编程的特性,允许一个类(子类)继承另一个类(父类)的属性和方法。 示例: ```python class Animal: def speak(self): print("Animal speaks.") class Dog(Animal): def speak(self): print("Dog barks.") dog = Dog() dog.speak() ``` 示例解释:`Dog` 类继承了 `Animal` 类,并重写了 `speak` 方法。创建 `Dog` 类的实例并调用 `speak` 方法。 ### polymorphism 含义:多态是指不同的对象可以对同一消息做出不同的响应,通常通过继承和方法重写实现。 示例: ```python class Shape: def area(self): pass class Square(Shape): def __init__(self, side): self.side = side def area(self): return self.side ** 2 class Circle(Shape): def __init__(self, radius): self.radius = radius def area(self): return 3.14 * self.radius ** 2 shapes = [Square(4), Circle(3)] for shape in shapes: print(shape.area()) ``` 示例解释:`Square` 和 `Circle` 类都继承自 `Shape` 类,并重写了 `area` 方法。创建不同形状的对象并存储在列表中,遍历列表调用 `area` 方法,不同对象对同一方法有不同的实现。 ### encapsulation 含义:封装是指将数据和操作数据的方法绑定在一起,并隐藏对象的内部实现细节,只提供公共的接口。 示例: ```python class BankAccount: def __init__(self, balance): self.__balance = balance def deposit(self, amount): self.__balance += amount def withdraw(self, amount): if amount <= self.__balance: self.__balance -= amount else: print("Insufficient funds.") def get_balance(self): return self.__balance account = BankAccount(1000) account.deposit(500) account.withdraw(200) print(account.get_balance()) ``` 示例解释:在 `BankAccount` 类中,使用双下划线 `__` 来表示私有属性 `__balance`,外部无法直接访问。通过公共方法 `deposit`、`withdraw` 和 `get_balance` 来操作和获取余额,实现了封装。 ### property 含义:`property` 是 Python 中的一个内置函数,用于创建属性的访问器和修改器,提供对属性的更高级控制。 示例: ```python class Person: def __init__(self, age): self._age = age @property def age(self): return self._age @age.setter def age(self, value): if value < 0: print("Age cannot be negative.") else: self._age = value person = Person(25) print(person.age) person.age = 30 print(person.age) person.age = -5 ``` 示例解释:使用 `property` 装饰器创建了一个名为 `age` 的属性,通过 `@age.setter` 装饰器定义了属性的修改器。在修改属性时会进行输入验证。 ### static method 含义:静态方法是类中的一种方法,它不需要访问类或实例的属性和方法,使用 `@staticmethod` 装饰器定义。 示例: ```python class MathUtils: @staticmethod def add(a, b): return a + b result = MathUtils.add(2, 3) print(result) ``` 示例解释:在 `MathUtils` 类中定义了一个静态方法 `add`,可以直接通过类名调用,不需要创建类的实例。 ### class method 含义:类方法是类中的一种方法,它接受类本身作为第一个参数,使用 `@classmethod` 装饰器定义。 示例: ```python class MyClass: count = 0 def __init__(self): MyClass.count += 1 @classmethod def get_count(cls): return cls.count obj1 = MyClass() obj2 = MyClass() print(MyClass.get_count()) ``` 示例解释:在 `MyClass` 类中定义了一个类方法 `get_count`,用于获取类的实例数量。类方法可以访问类的属性。 ### abstract class 含义:抽象类是一种不能被实例化的类,通常包含抽象方法,抽象方法是没有具体实现的方法,需要子类来实现。 示例: ```python from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def area(self): pass class Rectangle(Shape): def __init__(self, length, width): self.length = length self.width = width def area(self): return self.length * self.width rect = Rectangle(4, 6) print(rect.area()) ``` 示例解释:使用 `ABC` 和 `@abstractmethod` 定义了一个抽象类 `Shape`,其中包含一个抽象方法 `area`。`Rectangle` 类继承自 `Shape` 类并实现了 `area` 方法。 ### super 含义:`super` 用于调用父类的方法,通常在子类的方法中使用,以避免显式引用父类的名称。 示例: ```python class Parent: def __init__(self, name): self.name = name def greet(self): print(f"Hello, I'm {self.name}.") class Child(Parent): def __init__(self, name, age): super().__init__(name) self.age = age def greet(self): super().greet() print(f"I'm {self.age} years old.") child = Child("Tom", 10) child.greet() ``` 示例解释:在 `Child` 类的构造函数中,使用 `super().__init__(name)` 调用父类的构造函数。在 `greet` 方法中,使用 `super().greet()` 调用父类的 `g
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值