构造方法是我们学习Java过程中会接触到的,下面是我个人在学习中对构造方法的了解:
1.关于构造方法:
*创建类的实例时候自动调用
*用于类的实例初始化
2.构造方法的定义和语法:
|
需要注意的是:
*构造方法是特殊的方法
*方法名与类名同名
*没有返回值,没有void
3.默认构建方法:
若类中没有声明构造方法,编译器将创建默认无参构造方法
若用户声明了构造方法,编译器不再创建默认构造方法
默认构造方法方法体为零,即无参数
案例如下:
public class Test{
private int age;
private String name;
public Test(int make){age=make;} //构造方法1
public Test(String srt){name=str;} //构造方法2
public void output(){
System.out.println("name:"+name+",age:"+age);
}
}
public class Mada{
public static void main(String[]args){
Test a=new Test(); //错误,没有无参构造方法
}
}
public Person(){
}//无参构造方法
public Person(int age,String name){
this.age=age;
this.name=name;
}//全参构造方法
关于构建方法我们了解一些了,那应用在哪里呢?又和什么有关系呢?
4.类:
关键:声明一个类需要通过一个关键字class,类中的函数称作成员方法
类与对象的关系:类是对某一类事物的描述,是抽象的、概念上的意义,对象是实际存在的该类事物的每一个个体,也被称为实例
类的使用步骤:
第一步
构造方法应用到类当中
类的定义:[访问修饰符] class 类名{
成员变量
构造方法
成员方法
getter方法和setter方法
普通方法
class cat{
//猫的属性
public String weight;
public String sex;
public static String slogan ="猫爱吃鱼";//静态成员属性,归属于类
属性用于定义类所包含的数据的,属性就是成员变量。
注意:成员变量是用于存储数据,不建议设置pubilc,建议设置成private,方便使用getter和setter方法的读写
用来描述某个对象的特征的是属性,是静态的,比如说”猫爱吃鱼“。
第二步:
创始对象:
方法1.类名 对象名;
对象名=new 类名([实参列表]);
方法2:
类名 对象名=new 类名([实参列表]);
第三步:
访问对象的成员:
在类内部访问:成员名
在类外部访问:对象名.成员名
class Teacher{
String name;
int ID;
public void tell(){
System.out.println("请输入老师的个人信息:"姓名:"+name+" "+"ID:"+ID);
}
}
public class Teacher1{
public static void mian(String[] args){
//创建对象
// Teacher tea=null;//声明
//tea=new Teacher()//通过关键字new来实例化
Teacher tea =new Teacher();//声明并实例化
}
}
5.对象:
分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用时一个个依次调用。面向对象强调:"由谁来做",这个谁就是对象。
面向对象特征:(1)将对象的属性和行为封装起来 (2)类与类之间的关系,通过继承,无需重新编写,对原有的类的功能进行扩展 (3)指一个类定义的属性和方法被其他类继承后,它们具有不同数据类型或不同行为。
6.对象与类:
每个对象都是通过类来创建的,为此在创建对象前必须先创建类。
类的定义案例:
class Person:
def __init__(self, name, age, gender, height, weight):
self.name = name
self.age = age
self.gender = gender
self.height = height
self.weight = weight
def say_hello(self):
print(f"Hello, my name is {self.name}!")
7.成员方法:
每个对象都有它们的行为或者使用它们的方法,比如说一个活人会吃饭睡觉,我们把这些行为称作方法,是动态的,可以用这些方法来操作对象。
属性和方法称作这个对象的成员
class Person{
public int age;
public String name;
public String num;
public void sleep(){
System.out.println("睡觉");
}
public void eat(){
System.out.println("吃饭");
}
}
我们就可以拿这个类创建一个对象,来访问这个对象的成员,案例如下:
Person person =new Person;//实例化一个对象
person.name="lisi";
person.sex="mal";
person.sleep();
person.eat();
5.getter和setter方法:
getter方法:
返回对象内部的成员的值
[访问修饰符] 成员变量 getXxx(){
return;
}
setter方法:
用来设置成员变量,可以在方法里面过滤掉一些不合理的格式:
[访问修饰符] void setXxx(成员变量类型 参数){
成员变量=参数;
下面是定义圆类,使用getter和setter方法的案例:
import math
class Circle:
def __init__(self, radius):
self.radius = radius
def get_radius(self):
return self.radius
def set_radius(self, radius):
self.radius = radius
def get_area(self):
return math.pi * self.radius**2
def get_circumference(self):
return math.pi * self.radius * 2
# 创建圆对象
circle = Circle(5)
# 使用getter方法获取半径
print("半径:", circle.get_radius())
# 使用setter方法设置半径
circle.set_radius(7)
print("半径:", circle.get_radius())
# 使用getter方法获取面积
print("面积:", circle.get_area())
# 使用getter方法获取周长
print("周长:", circle.get_circumference())
好了,本期的学习分享到这里,希望我们能在代码的世界里汲取更多知识和收获乐趣,如有问题多谢指教。
拓展:开辟堆内存空间的时候,对name
和age
进行了初始化,
没有实例化,就没有开辟堆内存,栈指针就没有指向,就会出现空指针异常,
构造方法之所以可以分为有参和无参,原因就是方法是可以去重载的,
这是我们需要区分的。