override

夜光带你走进 Java 成神之路(四十二)擅长的领域

亡梦爱人 提交于 2019-12-30 14:01:41
夜光序言: 你不曾给我一次回眸,我却始终在对你微笑。 正文: 以道御术 / 以术识道 package 使用AQS重写自己的锁; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.AbstractQueuedSynchronizer; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; public class MyLock2 implements Lock{ private Helper helper; private class Helper extends AbstractQueuedSynchronizer{ //继承一下AbstractQueuedSynchronizer @Override protected boolean tryAcquire(int arg) { //如果第一个线程进来,我们可以拿到锁 //因此我们可以返回true //如果第二个线程进来,拿不到锁,返回false //如何判断是第一个线程进来,还是其他线程进来 int state = getState(); // 拿到状态 if (state == 0){ // setState(arg);

android音乐播放器

 ̄綄美尐妖づ 提交于 2019-12-28 23:38:23
1. Mp3Player.java 文件 package com.jacky.multimedia; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.os.Handler; import android.view.KeyEvent; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.ListView; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener

自定义对话框

◇◆丶佛笑我妖孽 提交于 2019-12-28 01:31:37
自定义对话框 package com . bw . day01 ; import android . content . Context ; import android . os . Bundle ; import android . support . annotation . NonNull ; import android . view . View ; import android . widget . Button ; import android . widget . TextView ; public class Dialog extends android . app . Dialog { private TextView title ; private TextView xinxi ; private Button no ; private Button yes ; private String noStr ; private String yesStr ; private String titleStr ; private String messageStr ; public interface Noclicklistenner { void onclick ( ) ; } private Noclicklistenner noclicklistenner ;

OKHttp的使用

左心房为你撑大大i 提交于 2019-12-27 14:21:48
public class MainActivity extends AppCompatActivity implements View . OnClickListener { TextView responseText ; @Override protected void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; setContentView ( R . layout . activity_main ) ; //按钮 Button sendRequest = ( Button ) findViewById ( R . id . send_result ) ; //文本框 responseText = ( TextView ) findViewById ( R . id . repose_text ) ; sendRequest . setOnClickListener ( this ) ; } @Override public void onClick ( View v ) { if ( v . getId ( ) == R . id . send_result ) { sendRequestHttp ( ) ; } } private void

c++之关键字:final与override

帅比萌擦擦* 提交于 2019-12-27 06:03:02
说明: final与override脱离了虚函数均无效,所以final与override都是用于修饰虚函数。 一:final final用于修改虚函数不能被重写。 二:override override用于修饰虚函数必须被声明。 举个例子1: class live { public : virtual void sleep ( ) = 0 ; //声明这是一个纯虚函数 } ; class people : public { public : void sleep ( ) override { std :: cout << "sleep()" << std :: endl ; } } 以上编译是OK的overide声明的sleep()会去检测live的纯虚函数sleep()是否存在,不存在就报错; 举个例子2: class live { public : virtual void sleep ( ) final ; //声明这是不可重写的纯虚函数 } ; class people : public { public : void sleep ( ) { std :: cout << "sleep()" << std :: endl ; //这里就会报错 } } 以上编译是不行的,final什么存虚函数是不可重写的; 来源: CSDN 作者: var.zhou 链接: https:/

设计模式——模板模式

社会主义新天地 提交于 2019-12-26 12:03:22
1:模板模式:就是定义一个骨架和算法,里面的方法,可以让子类去实现,也可以自己去实现。 2:代码 public abstract class AbstractTemplate { //子类去实现 protected void createBody(){ } //子类去实现 protected void createColor(){ } //父类本身 private void createEngine(){ System.out.println("所有车的引擎都是汽油机 1.5V"); } public void create(){ createBody(); //调用子类 createColor(); //调用子类 createEngine();//调用父类 } } public class BenZ extends AbstractTemplate { @Override protected void createBody() { System.out.println("奔驰的车身是跑车型"); } @Override protected void createColor() { System.out.println("奔驰的颜色是红色"); } } public class BMW extends AbstractTemplate { @Override protected

继承与扩展方法的比较

余生长醉 提交于 2019-12-25 09:07:09
前段时间,我做的一个项目有一个小小的需求,即:对范型集合类型ObservableCollection<T>进行排序。ObservableCollection<>这个类型在WPF和Silverlight中非常有用,因为它实现了INotifyCollectionChanged接口,继而在进行数据绑定的时候,如果将ItemsControl的ItemsSource属性绑定到一个ObservableCollection<T>对象上,那么当这个集合变化的时候(Add, Remove, Insert, Clear等等),相应的ItemsControl也会同步Update。由于ObservableCollection<T>继承自Collection<T>,因此它没有List<T>提供的Sort方法,所以如果我们想对ObservableCollection进行排序的话,就需要自己实现。 针对这个需求,我想到两个方案解决,方案一就是写一个子类,继承ObservableCollection,进而在其中实现Sort方法,相应的代码如下: Code 1 public class SortableObservableCollection < T > : ObservableCollection < T > 2 { 3 public void Sort() 4 { 5 Sort(Comparer < T >

Swift Objective-C 访问级别控制

烂漫一生 提交于 2019-12-23 17:53:05
Swift 一、private Swift 3.0之前,private修饰的方法和属性可以被子类访问或者重载( cannot override stored properties ),swift 3.0中private修饰的属性和成员变量只能在本类中访问。 二、fileprivate 文件内私有,在同一个源文件声明的类可以访问。 三、internal 默认访问权限,framework 或者 proj内可以访问。 四、public 可以在任何地方访问,framework之内可以被继承或者override,模块外的地方不可以被继承和override。 五、open 任何地方都可以被访问,继承或者override。 Objective-C 一、private :外界不可访问   @private NSInteger oneInteger; 二、protected :允许子类访问 @interface ClassA :NSObject { NSInteger oneInteger; //隐含@protected的意思 } @end @protected NSInteger oneInteger; 三、package: 模块内可访问,32位系统中模块外也可访问同public 四、public 最大访问权限 来源: https://www.cnblogs.com/beautylcy/p

C#状态机简记

非 Y 不嫁゛ 提交于 2019-12-23 00:23:23
状态机 简介 基础状态抽象类 状态机父类 示例 本人的状态机使用代码简记。 简介 只是简单地状态转换。 基础状态抽象类 using UnityEngine ; /// <summary> /// 基础状态机抽象类 /// </summary> /// <typeparam name="T">其状态衍生类的状态类型枚举</typeparam> public abstract class BaseState < T > : OnStateEnter , OnStateUpdate , OnStateRepeat , OnStateExit where T : struct { public BaseState ( Object owner ) { m_owner = owner ; } protected T m_stateType ; public T StateType { get { return m_stateType ; } } protected Object m_owner ; public Object Owner { get { return m_owner ; } } public virtual void OnEnter ( ) { } public virtual void OnUpdate ( ) { } public virtual void

viewpage的重写:取消动画,wrap下自适应高度,limit为0不执行预加载,禁止左右滑动

笑着哭i 提交于 2019-12-21 05:02:40
1.wrap下自适应高度 public class WrapViewPager extends ViewPager { public WrapViewPager ( Context context ) { super ( context ) ; } public WrapViewPager ( Context context , AttributeSet attrs ) { super ( context , attrs ) ; } @Override protected void onMeasure ( int widthMeasureSpec , int heightMeasureSpec ) { int height = 0 ; for ( int i = 0 ; i < getChildCount ( ) ; i ++ ) { View child = getChildAt ( i ) ; child . measure ( widthMeasureSpec , MeasureSpec . makeMeasureSpec ( 0 , MeasureSpec . UNSPECIFIED ) ) ; int h = child . getMeasuredHeight ( ) ; if ( h > height ) height = h ; } heightMeasureSpec