类:用来描述对象的(属性和方法)
类和对象的关系:
类是对象的抽象
对象是类的实例
权限修饰符 [特征修饰符] 返回值类型 方法名 ([参数列表])[抛出异常][{(方法体)}]
方法重载
-
方法名相同参数类表不同:表现在参数的个数 参数的类型 参数的顺序
-
目的 为了方便记忆与复用
-
传参(有了形参):
a) 相同类型
b) 不同类型:可以找自动类型转换的值
c) 不传参数:报错
JDK1.5新手法:
public void test(int…x){ 方法体}
i. Int…x 动态传参列表
类型固定,个数不固定(客串个数0-n个)
ii. 与public void test(){}
构成重载,如果调用空参方法,优先执行空参函数
iii. 等价于 public void test (int[] array){}
区别:前者可以不穿参数,后者必须传参数
类中的内部成员
-
属性:静态描述类的特征
-
方法:动态描述类的行为
-
构造方法:用来创建当前类对象
-
作用:创建当前类对象
-
写法:
权限修饰符 与类名一致的方法名([参数列表])[抛出异常]{
创建对象;
返回对象;
}
-
通过new字调用
-
特点:
A.每个类的都有构造方法,
若自己在类中没有定义,系统会默认提供一个无参数构造方法;
若在类中自己定义了构造方法,则默认无参数构造方法被覆盖
B.构造方法存在方法的重载
-
-
程序块:一个方法(只可以用static或不修饰 无返回值 无名字 无参数 )
-
作用:做事
-
写法:
{做事情}
-
用法:块也需要调用才能执行,自动执行
每一次我们调用构造方法之前
系统会自动的调用程序块
-
特点:
没有重载概念
但是,在类中可以定义多个代码块
-
this关键字的使用,代替某个对象
-
代替一个对象
-
this可以调用属性和方法
可以调用构造方法 => this();
-
位置:
可以放在类中的任何成员位置,上下顺序顺意
类中四成员
-
属性:静态描述特征(存值)
权限修饰符 [特征修饰符] 属性类型 属性名字[=值];
-
方法:动态描述行为(做事)
权限修饰符[特征修饰符] 返回值类型 方法名([参数列表])[抛出异常][{方法体}]
-
构造方法:创建当前类对象
权限修饰符 与类名一致的方法名([参数列表])[抛出异常]{方法体}
-
程序块
构建对象前自动调用
{
方法体;
}
-
this关键字的使用
用来代替某一对象;
可以调用一般属性或一般方法 放置在任何类成员中;
可以调用构造方法 能放在类一个构造方法内 但只能放在程序的第一行;
package demo5_18;
import com.sun.media.jfxmediaimpl.HostUtils;
public class Student {
// 成员属性
private String name;
private int age;
// 空参构造
public Student() {
}
// 全参构造
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// 程序快,在创建对象之前被创建
{
System.out.println(this.name);// null 证明了他在构造方法之前被创建
System.out.println("this is a process block");
}
// getter and setter 方法
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 void study(){
System.out.println(this.age+"岁的"+this.name+"正在学习");
}
public void eat(){
System.out.println(this.age+"岁的"+this.name+"正在吃饭");
}
// 动态传递数组 int...x
public void test(int...x){
for (int i : x) {
System.out.println(i);
}
System.out.println("使用动态传递数组的方法");
}
// 存在重载,当与空参数的重载同时出现时,优先调用空参数的重载
public void test(){
System.out.println("这是test 的空参数重载方法");
}
}