研究の第3週が終了したJavaは、彼らが学んだし、レコードの所得たものについてブログを書きます。
1.オブジェクト指向
学習内容:
- クラスの定義を呼び出して、オブジェクトを作成し、プロパティにアクセスする、方法:最後の週
- オーバーロードされた方法:ルールと使用
- クラスのコンストラクタ:ルール、クラスの作成プロセス
- オーバーロードコンストラクタ:ルールと使用、マルチパラメータの設定
- このキーワード:①this.xxxx;②this(XX、XXX);
- マルチパラメータカスケードアクセス
問題と間違った質問:
- マルチパラメータカスケード訪問:
ワーカークラスの定義、そのプロパティは、プロパティのアドレスと郵便番号のスタッフをAddressクラスを持っています
public class Test {
public static void main(String[] args) {
Worker zhangsan = new Worker("zhangsan",25,2500,new Address());
//多参级联构造,先暂时为worker的addr属性建一个新对象
zhangsan.addr.address=("北京市海淀区清华园1号");//给worker对象的addr属性赋值
zhangsan.addr.zipCode = ("100084");
System.out.println(zhangsan.name
+ zhangsan.addr.address //从worker对象的addr属性取值
+ zhangsan.addr.zipCode);
}
}
class Worker{ //Worker类
String name ;
int age;
double salary;
Address addr; //addr属性为worker对象的地址和邮编
public Worker() {}
public Worker(String name , int age , double salary,Address addr) {
this.name = name ; //多参构造
this.age = age;
this.salary = salary;
this.addr =addr;
}
}
class Address{ //address类
String address ;
String zipCode ;
public Address() {}
public Address(String address , String zipCode) {
this.address = address ;//address类的多参构造
this.zipCode = zipCode ;
}
}
2.オブジェクトの三つの特徴は
学習内容:
民間のパッケージ:
用途:プライベートとパブリックプロパティ・メソッド
継承は拡張しています。
1.継承の概念、要件は、親クラスを選択し
、コンストラクタ、私有財産の修正方法、修飾子制限:2. 3点を継承することはできません
3.アクセス修飾子ルール:このカテゴリにはプライベート、デフォルト、保護、国民を、同じパッケージ、制限クラスは、特別の規定バンズ
に記載の方法覆っ
5.superキーワードを使用して:super.xxxを、スーパー(XX、XXX);
オブジェクトの作成6.継承:•サブクラスオブジェクトを作成するには、作成する必要があります親オブジェクトは、・
コントラストとスーパーキーワードを7.this
ポリモーフィック:
そして文法的概念
多型の使用シナリオ:
親クラスの1メソッドのパラメータとして、サブクラスのメソッドに対応するパラメータの引数、関数呼び出し(カバー)として親クラスの様々なサブクラス
2.親戻り値クラスとして、サブクラスは、戻り値アウトとして使用するに返却認定した方法は、コールカバレッジのサブクラスで呼び出すことができなかった
上向きの移行と下向きの移行を:
親クラスのサブクラスへの参照:アップキャスト1オブジェクトは、オブジェクトは、親クラスのプロパティを使用することができます
。2.ダウンキャスト:親の参照サブクラスのオブジェクトを、その独自のサブクラスタイプに押し戻さ
①文法や異常なキャスト
②instanceofキーワードを
問題と間違った質問:
- 新しいアレイを形成し、それを横断するように選択された配列動物犬クラスのセット。
public class Q12 {
public static void main(String[] args) {
Animal[] as = new Animal[] {
new Dog("Pluto") ,
new Cat("Tom"),
new Dog("Snoopy") ,
new Cat("Garfield")};
//将所有狗类挑选出来,放在同一个数组
Dog[] dogs = getAllDog(as);
for(int i = 0 ; i<dogs.length; i++) { //遍历所有狗
System.out.println( dogs[i].getName() );
}
}
//挑狗的函数:
public static Dog[] getAllDog(Animal[] as) { //多态场景一:父类形参
int acount = 0;
//1.计数器,用来确定创建的狗数组的长度
for(int i = 0 ; i<as.length;i++) {
if(as[i] instanceof Dog) {
acount++;
}
}
Dog[] dogs = new Dog[acount];
//2.依计数器创建狗数组
int size = 0;
//3.有效长度确定数组的下标
//4.将狗挑出来放在狗数组
for(int i = 0 ; i<as.length;i++) {
if(as[i] instanceof Dog) { //符合要求,狗下标填值
dogs[size] = (Dog)as[i]; //这里使用到了强转,从Animal[]拆出来的元素默认为Animal,其真正类型为狗,从Animal强转回来
size++;//有效长度增加
}
}
return dogs;
}
}
class Animal{
private String name; //封装的属性
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public Animal(){}
public Animal(String str) {
setName(str);
}
}
class Dog extends Animal{
public Dog() {}
public Dog(String str) {
super(str);
}
}
class Cat extends Animal{
public Cat() {}
public Cat(String str) {
super(str);
}
}
- 継承および被覆方法:
グラフィッククラス、周囲とグラフィックスの面積を算出することができる
有する、パターンクラスのサブクラス円半径属性
パターンサブクラス長さ及び幅特性を有する矩形の第二
属性の辺長を有する矩形サブクラス矩形
import java.lang.Math;
public class Question15 {
public static void main(String[] args) {
Circle c1 = new Circle();
c1.radius = 3.0; //半径为3.0的圆
System.out.println(c1.area() + "\n" + c1.girth());
Square s1 = new Square();
s1.setSide(5.0); //边长为5.0的正方形
System.out.println(s1.area() + "\n" + s1.girth());
}
}
class Shape{ //祖父类:图形
public double area() { //能计算面积并返回
return 0;
}
public double girth() { //能计算周长并返回
return 0;
}
}
class Circle extends Shape{ //二叔类:圆形
double radius; //半径
public double area() { //面积
double s;
s = radius * radius * Math.PI;
return s;
}
public double girth() { //周长
double c;
c = 2 * Math.PI * radius;
return c;
}
}
class Rect extends Shape{ //父亲类:矩形
double length1; //长
double width; //宽
public double area() { //面积
double s;
s = length1 * width ;
return s;
}
public double girth() { //周长
double c;
c = length1 + width;
return 2*c;
}
}
class Square extends Rect{ //自己类:正方形
private double side; //私有边长
public void setSide(double side) { //set边长时一块set父类长宽
this.side = side;
this.length1 = side;
this.width = side;
}
public double getSide() {
return side;
}
//之后继承父类面积、周长
}
3.三つの修飾子
学習内容:
抽象抽象:
抽象クラス、抽象メソッド
問題と間違った質問:
- 抽象関数やメソッドの上の領域に計算されたパターンの境界:
abstract class Shape{ //抽象——祖父类:图形
abstract public double area() ; //抽象方法——计算面积
abstract public double girth() ; //抽象方法——计算周长
}