java基础五--------类,方法,构造器

一.类的概念
1.1 类是什么?
a.类是对大量对象共性的抽象
b.类是客观事物在人脑中的主观反映
c.类是创建对象的模板
1.2 类由两部分组成(属性和行为)
属性和行为:例如学生类,凡是学生,都有学号、姓名、班级等,这些都是描述学生特征的,称为学生类的属性;凡是学生,都有回答问题、做实验等行为
定义一个类的语法:
[修饰符] class 类名{
//变量
//方法
}
举例:

   public class Test{
   int  name;
   public static void eat(){
   }
   }

学生:
属性: 姓名 、 性别 、年龄 、国籍

当一个类中有个变量 被这个类所有的对象都共享时 就用static

static:
随着类的加载而存在
先与对象而存在
被类中所有的对象共享(如果某个数据被所有对象所共享 就 用static)
直接可以使用: 类名.属性进行调用

static修饰的变量叫类成员
变量用static修饰:
[修饰符] static 数据类型 变量名
static String country;
方法用static修饰:
[修饰符] static 返回值类型 方法名([参数类型 参数名,…])
public static void study(){}

没有static修饰的叫实例成员
变量非static修饰:
[修饰符] 数据类型 变量名
String country;
方法非static修饰:
[修饰符] 返回值类型 方法名([参数类型 参数名,…])
public void study(){}

类成员和 实例成员区别:
1:所属不同: 用static修饰的成员 是属于类的
没有用static修饰的是属于对象
2:内存不同: 类成员 存在方法区的静态区
实例成员存在 堆中
3:生命周期: 类成员随着类的加载二存在
实例成员随着对象的创建二存在
4:调用不同:类成员 可以对象名.方法名 或 对象名.变量名 / 类名.方法名() 或 类名.属性名
实例成员 只能 对象名.方法名 或 对象名.变量名

注意:
1: 用static修饰的成员不能使用this
static修饰的是属于类 而this是属于对象的
类先于对象二存在
2:static修饰是的方法不能使用 非static修饰的成员变量(创建对后才会存在)
非static修饰是的方法,可以调用 static修饰的方法

成员方法(实例方法):
能调用没有用static修饰的 变量 和 方法
能 调用用static修饰的成员变量 和 方法
类方法:
只能调用static修饰的变量 和 方法

二.方法的重载在这里插入图片描述

package day04;

public class t1 {
	public void study(){
		System.out.println("同学你好");
	}
	public void study(int sno){
		System.out.println("学号为:"+sno+"的同学,欢迎来到**学院!");
	}
	public void study(String name){
		System.out.println(name+"你好");
	}
	public void study(int sno,String name){
		String s=name+" 同学,你好"+"\n"+"你的学号是:"+sno;
		System.out.println(s);
	}
	public void study(int sno,int name){
		System.out.println(name+"你好");
	}
	public String study(String sex,int age){
		String s="年龄:"+age+"性别:"+sex;
		return s;
	}
	public void name(){
		System.out.println("同学你好");
	}
	public String study1(T2 t2){
		t2.call2();
		return null;
	}
}

三.构造器
特点:
函数名与类名相同
不用定义返回值类型
没有具体的返回值。
作用:
给对象进行初始化。
语法:
[修饰符] 方法名与类名相同([参数类型 参数名,参数类型 参数名]){
}
例:public Student() {
}
注意:
默认构造函数的特点。
多个构造函数是以重载的形式存在的。
构造器没有返回类型,包括关键字void也不能有。
任何类都含有构造器。如果没有显式地定义类的构造器,则系统会为该类提供一个默认的构造器。这个默认的构造器不含任何参数。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。
Java语言中 可以为某一个类提供多个重载的构造方法
构造器用来实例化对象的而且每个类都默认有一个无参的构造器,若重载带参数构造器 则默认无参的构造器被覆盖 所以要用无参构造器就要重写无参构造器的方法
构造器的使用:
通过使用new运算符构造对象
语法:
类名 类变量名=new 类名([参数值]);
例:Student stu=new Student();

-----构造器分为有参数和无参数
例:

package day04;

public class T3 {
	int sno;
	String sname;
	String sex;
	int age;
	static String city;
	public T3(){
		
	}
	public T3(int sno,String sname,String sex,int age,String city){
		this.sname=sname;
		this.sno=sno;
		this.sex=sex;
		this.age=age;
		this.city=city;
		System.out.println("学号:"+sno+"  姓名:"+sname+"  性别:"+sex+"  年龄:"+age+"  居住地:"+city);
	}
	public T3(int sno,String sname,String sex,int age){
		this.sname=sname;
		this.sno=sno;
		this.sex=sex;
		this.age=age;
		System.out.println("学号:"+sno+"  姓名:"+sname+"  性别:"+sex+"  年龄:"+age+"  居住地:"+city);
	}
	public T3(int sno,String sname,String sex){
		this.sname=sname;
		this.sno=sno;
		this.sex=sex;
		System.out.println("学号:"+sno+"  姓名:"+sname+"  性别:"+sex+"  年龄:"+age+"  居住地:"+city);
	}
	public T3(int sno,String sname){
		this.sname=sname;
		this.sno=sno;
		System.out.println("学号:"+sno+"  姓名:"+sname+"  性别:"+sex+"  年龄:"+age+"  居住地:"+city);
	}
	public static void school(){
		System.out.print(city+"大学");
	}
	public static void banji(){
		school();
		System.out.print("信息工程系");
	}
}

测试类的使用,检验上述代码

package day04;

public class Test3 {
	public static void main(String[] args) {
		T3 s1=new T3(120,"张三","男",100,"武汉");
		T3 s2=new T3(120,"张三","男",100);
		T3 s3=new T3(120,"张三","男");
		T3 s4=new T3(120,"张三");
		T3.city="北京";
		T3.banji();
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值