女孩:談Java了,好耶? 男孩:夜談一下,Java的類的定義~ 女孩:那談Java的類的什麼呢? 男孩:類的定義,對象的定義,類中的方法,構造方法,this關鍵字,方法的重載,Java中的類的訪問許可權,set和get方法,static關鍵字~ 面向對象設計思想 設計思想的變化 例如:學生行為 對於 ...
- 女孩:談Java了,好耶?
男孩:夜談一下,Java的類的定義~
- 女孩:那談Java的類的什麼呢?
男孩:類的定義,對象的定義,類中的方法,構造方法,this關鍵字,方法的重載,Java中的類的訪問許可權,set和get方法,static關鍵字~
面向對象設計思想
設計思想的變化
例如:學生行為
對於結構化程式設計:起床,洗臉,吃飯,下課,放學
對於面向對象設計,類,類中的方法
OOP的特點
面向對象的特征
(1)封裝
(2)繼承
(3)多態
類的定義:
格式:
class Circle{
//類聲明,類的命名第一個字母大寫以便與對象區別
int r;
//成員變數,或稱為類的屬性
……
void print(){
//成員方法
int r=3;
//局部變數
System.out.println(r);
}
}
//整個大括弧里的稱為類的主體部分
類的定義
類是一種複雜的數據類型
它是將數據和與數據相關的操作封裝在一起的集合體
類分為兩部分:類的聲明和類的主體。
格式:
<類 聲明>
{
<類主體>
}
主體的部分
類主體部分是由成員變數和方法組成,不可以在類中直接寫表達式語句,它必須放到一個方法里。
對象的概念
對象是類的實例化
public static void main(String [] args){
Circle circle=new Circle ();//類的實例化
circle.r=1;
...
circle.print();//對象的方法調用
}
對象的創建
格式:
類名 對象名
為聲明的對象分配記憶體,用new和類的構造方法為聲明的對象分配記憶體,如果類中沒有構造方法,系統會預設調用類的構造方法。
Student student = new Student();
對象的使用
格式
對象名.成員變數名
對象名.方法名
“.”這點為英文的點。
如:
student.name
student.print();
類中的方法
在某個方法里的變數為局部變數,在類中的,方法外的變數為成員變數。
如果成員變數和局部變數同名時,則成員變數隱藏。
方法中有同名的局部變數訪問時,用this關鍵字表示。
構造方法是一種特殊的方法,構造方法的名要與類的名相同,而且沒有類型,構造方法可以重載。
this關鍵字為當前對象,不出現含有static中。
Student(String name, int age){
this.name = name;
this.age = age;
}
類的定義
1.定義一個Person類,主要功能是輸出姓名,身高,體重,類中有兩個構造方法,其中一個構造方法無參數用於初始化,另一個構造方法是有參數的,可傳值
- 定義Person類的對象,通過對象成員方法輸出對象的信息
public class Person {
String name;
double height;
double weight;
Person(){
name = "jeskson";
height = 170;
weight = 100;
}
Person(String name, double height, double weight){
this.name = name;
this.height = height;
this.weight = weight;
}
void print(){
System.out.println(this.name);
System.out.println(this.height);
System.out.println(this.weight);
}
public static void main(String[] args){
Person student = new Person();
student.print();
Person stu = new Person("jeskson",180,100);
stu.print();
}
}
public class Circle {
//成員變數
int r;
final double PI=3.14;
//成員方法
double area(){
return PI*r*r;
}
//成員方法
double zhou(){
return PI*2*r;
}
public static void main(String[] args){
Circle c1;//定義對象
//為對象申請記憶體空間,自動調用構造方法,如果沒有寫構造方法,系統會自動產生一個無參的
c1 = new Circle();
c1.r=1;//為對象的變數賦值
System.out.println(c1.area());//輸出對象成員方法的返回值
System.out.println(c1.zhou());
}
}
public class Circle {
//成員變數
int r;
final double PI=3.14;
//無參的構造方法
Circle(){
}
//帶參的構造方法
Circle(int r){
this.r = r;
}
//成員方法
double area(){
return PI*r*r;
}
//成員方法
double zhou(){
return PI*2*r;
}
public static void main(String[] args){
Circle c1;//定義對象
//為對象申請記憶體空間,自動調用構造方法,如果沒有寫構造方法,系統會自動產生一個無參的
c1 = new Circle();
c1.r=1;//為對象的變數賦值
System.out.println(c1.area());//輸出對象成員方法的返回值
System.out.println(c1.zhou());
Circle c2 = new Circle(2);//調用帶參數的構造方法
System.out.println(c2.area());//輸出對象成員方法的返回值
System.out.println(c2.zhou());
}
}
Java中的類的訪問許可權
成員變數的聲明
【修飾符】類型 變數名
常用的修飾符關鍵字有:public、 private、 protected 、 friendly、static 和final。
類:private,friendly,protected,public
包中所有類:friendly,protected,public
包外的子類:protected,public
所有類:public
類中的set和get方法
set方法是用來修改成員變數的值
get方法是用來獲取成員變數的值
static關鍵字
使用static修飾的成員變數為靜態變數;用static修飾的類,為靜態類,用來修飾方法,則為靜態方法。靜態變數是歸類所有,靜態變數直接通過類調用,而不用實例化對象。靜態方法也是用類名直接調用的。靜態方法只能操作靜態變數而不能使用實例變數。
public class Account {
private String name;
private double yu;
private int year;
private double rate=0.025;
public Account() {
yu=10;
year=1;
}
public Account(double yu, int year) {
this.yu = yu;
this.year = year;
}
public void save(double yu){
this.yu+=yu;
}
public void feach(double yu){
this.yu-=yu;
}
public double total(){
return this.yu+this.rate*this.year*this.yu;
}
public static void main(String[] args) {
Account zhangshan=new Account(1000, 3);
zhangshan.save(1000);
System.out.println(zhangshan.total());
}
}
package hh;
public class Worker {
private String ID;
private String name;
private double basic;
private double bonus;
public Worker() {
name="jeskson";
basic=1900;
bonus=100;
ID="1024";
}
public Worker(String ID, String name, double basic, double bonus) {
super();
this.ID = ID;
this.name = name;
this.basic = basic;
this.bonus = bonus;
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBasic() {
return basic;
}
public void setBasic(double basic) {
this.basic = basic;
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
public double getTax(){
if (this.basic+this.bonus<=1600){
return 0;
}
return (this.basic+this.bonus-1600)*0.15;
}
public double getSalary(){
if (this.basic+this.bonus<=1600){
return this.basic+this.bonus;
}
return this.basic+this.bonus-this.getTax();
}
void print(){
System.out.println("工人姓名:"+this.name);
System.out.println("所得稅:"+this.getTax());
System.out.println("實際工資:"+this.getSalary());
}
public static void main(String[] args) {
Worker jack=new Worker("1024", "jeskson", 1400, 100);
jack.print();
}
}
public class Student {
String name;
int age;
double height;
double weight;
static Strin monitor;
public Student() {
}
public Student(String name, int age, double height, double weight){
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}
void print(){
System.out.println(name+" "+age+" "+height+" "+weight+" "+monitor);
}
static void printmonitor(){
System.out.println(monitor);
}
public static void main(String[] args){
Student.monitor = "jeskson";
Student stu = new Student("dashu",20,179,100);
stu.print();
}
}
小禮物走一走 or 點贊