追进度啊。。。新java的对象相关。
1 在编写类的内部代码的时候,在类的内部new这么一个类?
——试答 :类内部是可以有一个main函数的,在这个main函数内部就可以创建类(具体作用类似于测试?)【构造函数用于初始化,内部main函数】
2 构造函数 是一开始就会被调用的函数(可以与类名相同,可以没什么意义)
是必须与类名相同,而且不能有返回类型(也就是说,如果要有返回类型,那就不能叫这个名字)
重载:一个类中可以有多个构造函数,区分这些构造函数的是函数要求的不同的输入参数。创建对象时如果使用不同的参数值,就会自动调用对应的构造函数。
可以用this() 调用其它构造函数,但是只能用一次
3 封装
private 只能在类内一层定义
(同一个类的不同对象之间,是可以互相访问其他对象的私有变量的!!)
4 一个编译单元只能有一个public 类
***** week1的作业代码
谈谈收获:
-1 类初始化用的是构造函数
-2 只有返回一个对象的内部函数,才能继续使用.这种形式
-3 内部之间调用不用加this,除非这部分有私有的同名变量
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Fraction a = new Fraction(in.nextInt(), in.nextInt());
Fraction b = new Fraction(in.nextInt(),in.nextInt());
a.print();
b.print();
a.plus(b).print();
a.multiply(b).plus(new Fraction(5,6)).print();
a.print();
b.print();
in.close();
}
}
class Fraction {
int x,y;
public Fraction(int a1,int a2){
x = a1;
y = a2;
}
//String outPut = new String();
void print() {
//判断是否是最简形式 ,认为为求两个数之间的最大公约数
int temp = maxPublic(x,y);
//如果最大公约数不是1 ,那么说明不是最简形式
if(temp != 1){
x /= temp;
y /= temp;
//判断xy是否相等 相等则输出1
System.out.println( (x == y)?"1":(x+"/"+y));
}
int maxPublic(int in1,int in2) {
int temp=0;
while(in1%in2 != 0) {
temp = in1%in2;
in1 = in2;
in2 = temp;
}
return in2;
}
//分数加法:分母相乘 分子乘以对方分母后相加
Fraction plus(Fraction plusFra){
//int temp= x * plusFra.y + y * plusFra.x;
int x1,y1;
x1 = x * plusFra.y + y * plusFra.x;
y1 = y * plusFra.y;
Fraction re = new Fraction(x1,y1);
return re;
}
//分数乘法:上下相乘
Fraction multiply(Fraction
int x1 = x * multiFra.x;
int y1 = y * multiFra.y;
Fraction re = new Fraction(x1,y1);
return re;
}
//转double
double toDouble(){
double b = y+0.0;
b = x/y;
return b;
}
}